home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 38
/
Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso
/
-seriously_amiga-
/
programming
/
other
/
hrtmon
/
src
/
disassemble.s
< prev
next >
Wrap
Text File
|
1999-01-29
|
63KB
|
2,925 lines
;HRTmon Amiga system monitor
;Copyright (C) 1991-1998 Alain Malek Alain.Malek@cryogen.com
;
;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either version 2
;of the License, or (at your option) any later version.
;
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;
;You can find the full GNU GPL online at: http://www.gnu.org
* Beermon Disassembler modified for HRTmon
* 68000-68040/FPU/MMU
HRTeval equ -1 ;use evaluate routine from HRTmon ? (for assemble)
;s
; lea.l $f800d2,a4
; lea.l destbuf(pc),a0
; bsr disassemble
; rts
;
;destbuf dcb.b 80,0
; dc.b 0
; even
;
;evaluate
*****************************************************************************
;-> a4=address to dis
;-> a0=ptr on dest string
;-> d0=%00000RAU
; U=1 upper case
; A=1 print 'd $address'
; R=1 print indirect address
;<- d0=len of instr.
baseBMON
xcharsBMON equ 80
failBMON: sf d7
rts
disassemble:
movem.l d1-d7/a0-a3/a5-a6,-(a7) ;yo, funky again...
lea.l baseBMON(pc),a6
move.b d0,modeBMON
move.l a4,a5
move.l a5,disaddrBMON
move.l a0,linebufBMON
lea instrBMON(pc),a4 ;a5:pc
move.l a5,d6
dis2BMON: moveq #xcharsBMON/4-1-1,d0 ;redisBMON
move.l linebufBMON,a0
move.l #" ",d1 ;fill linebufBMON
dis3BMON: move.l d1,(a0)+
dbf d0,dis3BMON
move.b #$a,(a0)+
clr.b (a0)+
sf ea2ndBMON ;begin with 1st eaposBMON
move.l d6,a5
move.w (a5)+,d1 ;instrBMON.w
dis0BMON: move.w d1,d0
and.w (a4)+,d0 ;mask
cmp.w (a4),d0 ;instrframe
lea 14-2(a4),a4
bne.b dis0BMON ;scan instrBMON
move.w 4-14(a4),d2 ;info.w
move.l d6,d0
move.l linebufBMON,a0
btst #1,modeBMON
beq.b .noaddress
move.w #"d ",(a0)+
move.b #"$",(a0)+
bsr.w longtoaBMON
addq.w #1,a0
.noaddress
lea -14+6(a4),a1
dis1BMON: move.b (a1)+,(a0)+
bpl.b dis1BMON
bclr #7,-1(a0) ;end
st d7
move.w d2,d4
and.w #$ff00,d4 ;sizeopt
cmp.w #s67BMON,d4
bne.b nos67BMON
bsr.w size67BMON
nos67BMON: cmp.w #s9a_BMON,d4
bne.b nos9a_BMON
bsr.w size9a_BMON
nos9a_BMON: cmp.w #s9aBMON,d4
bne.b nos9aBMON
bsr.w size9aBMON
nos9aBMON: cmp.w #s6BMON,d4
bne.b nos6BMON
bsr.w size6BMON
nos6BMON: cmp.w #s8BMON,d4
bne.b nos8BMON
bsr.w size8BMON
nos8BMON: cmp.w #stabBMON,d4
bne.b nostabBMON
bsr.w opsposBMON
nostabBMON: ;cmp.w #snopBMON,d4
;bne.b nosnopBMON
nosnopBMON:
lea disoffsBMON(pc),a1
ext.w d2 ;clr sizeopt
add.w d2,d2
move.w (a1,d2.w),d2
move.l d6,-(a7)
jsr dissubsBMON(pc,d2.w) ;no d7,a4
move.l (a7)+,d6
tst.b d7
beq.w dis2BMON
move.l a5,a4 ;next instr. addr in a4
sub.l disaddrBMON,a5
move.l a5,d0 ;d0=len of instr.
btst #0,modeBMON ;upper case ?
beq.b .end
move.l linebufBMON,a0
.up move.b (a0)+,d1
beq.b .end
cmp.b #'a',d1
blt.b .up
cmp.b #'z',d1
bgt.b .up
sub.b #'a'-'A',d1
move.b d1,-1(a0)
bra.b .up
.end movem.l (a7)+,d1-d7/a0-a3/a5-a6
rts
dissubsBMON:
opfailBMON=*-dissubsBMON
moveq #-1,d0
opf0BMON: move.w d0,$dff180
dbf d0,opf0BMON
noopsBMON=*-dissubsBMON
rts
dcwopBMON=*-dissubsBMON
move.w d1,d0
bra.w wordtoa_BMON
eatoccrBMON=*-dissubsBMON
sf imsizeBMON
bsr.w doeaBMON
bra.w optoccrBMON
eatosrBMON=*-dissubsBMON
move.b #1,imsizeBMON
bsr.w doeaBMON
bra.w optosrBMON
ccrtoeaBMON=*-dissubsBMON
bsr.w opccrBMON
bra.b dissreaBMON
srtoeaBMON=*-dissubsBMON
bsr.w opsrBMON
dissreaBMON:bra.w dotoeaBMON
fpufmt2BMON:dc.b "lsxpwdbp"
dfmvmemBMON:lea movetxtBMON+1(pc),a1 ;fmove
bsr txttobufBMON
move.b #".",(a0)+
move.w d6,d0
rol.w #6,d0
and.w #%111,d0
move.b (fpufmt2BMON,pc,d0.w),(a0)+
bsr opsposBMON
moveq #%111000,d2
and.w d1,d2
bne.b no2dregBMON ;dn ?
tst.b d0 ;%000.l
beq.b no2dregBMON
subq.b #1,d0 ;%001.sBMON
beq.b no2dregBMON
subq.b #3,d0 ;%100.w
beq.b no2dregBMON
subq.b #2,d0 ;%110.b
bne.b dmvfailBMON
no2dregBMON:cmp.b #%001000,d2 ;an ?
beq.b dmvfailBMON
moveq #%01111111,d5
and.w d6,d5 ;k factor
moveq #1,d3 ;static k
subq.b #%011,d0 ;p{#k}
beq.b dfmvk0BMON
moveq #2,d3 ;dynamic k
subq.b #%111-%011,d0 ;p{dn}
beq.b dfmvk0BMON
tst.b d5
bne.b dmvfailBMON ;k factor>0 ?
moveq #0,d3 ;no k factor
dfmvk0BMON: move.w d6,d0
lsr.w #7,d0
and.w #%111,d0
bsr.w dfp5BMON ;fpn
bsr dotoeaBMON
subq.b #1,d3 ;k factor ?
bmi.b dfmvk1BMON
move.b #"{",(a0)+
tst.b d3 ;static ?
beq.b dfmvkp0BMON
moveq #%1111,d0
and.b d5,d0
bne.b dmvfailBMON ;unused bitsBMON
move.b #"d",(a0)+
lsr.b #4,d5
bra.b dfmvkpBMON
dfmvkp0BMON:move.b #"#",(a0)+
btst #6,d5
beq.b dfmvkpBMON
bset #7,d5
neg.b d5
move.b #"-",(a0)+
dfmvkpBMON: move.l d5,d0
bsr.w hextodBMON
move.b #"}",(a0)+
dfmvk1BMON: rts
dmvfailBMON:bra failBMON
dfpuBMON=*-dissubsBMON
move.w (a5)+,d6 ;fpu extension word
move.w #$e000,d0
and.w d6,d0
cmp.w #$6000,d0
beq.w dfmvmemBMON
move.w #$a000,d0
and.w d6,d0
bne.b dffailBMON
btst #14,d6 ;r/m
bne.b dfp0BMON
tst.b d1 ;ea field=0?
bne.b dffailBMON
dfp0BMON: lea fpuinstBMON(pc),a1
moveq #%01111111,d0
and.w d6,d0
dfp2BMON: move.b (a1)+,d2
bclr #7,d2
sne d3 ;0:fp0,ff:fp0,fp0
moveq #%01111000,d4
and.b d6,d4
cmp.b #%00110000,d4 ;sincosBMON
seq d4
beq.b dfp1BMON
cmp.b d2,d0
beq.b dfp1BMON
addq.w #6,a1
tst.b (a1)
bne.b dfp2BMON
dffailBMON: sf d7
rts
fpufmtBMON: dc.b "lsxpwdb*"
fpuimsBMON: dc.b %010,%010,%110,%110,%001,%100,%000,-1
dfp1BMON: bsr.w txttobufBMON
move.b #".",(a0)+
move.w d6,d0
rol.w #6,d0
and.w #%111,d0
btst #14,d6
beq.b dfp3BMON
cmp.w #%111,d0
beq.b dffailBMON
move.b (fpufmtBMON,pc,d0),(a0)+
move.b (fpuimsBMON,pc,d0.w),imsizeBMON
bsr.w opsposBMON
moveq #%111000,d2
and.w d1,d2 ;src:datareg?
bne.b dfp8BMON
tst.b d0 ;%000.l
beq.b dfp8BMON
subq.b #1,d0 ;%001.sBMON
beq.b dfp8BMON
subq.b #3,d0 ;%100.w
beq.b dfp8BMON
subq.b #2,d0 ;%110.b
bne.b dffailBMON
dfp8BMON: cmp.b #%001000,d2 ;an
beq.b dffailBMON
bsr.w doeaBMON ;imsizeBMON!!!
st d0 ;dest fpureg
sf d3
bra.b dfp6BMON
dfp3BMON: move.b #"x",(a0)+
bsr.w opsposBMON
bsr.b dfp5BMON
dfp6BMON: moveq #%01111111,d2
and.w d6,d2
cmp.b #%00111010,d2
bne.b dftstBMON
and.w #$0380,d6 ;ftst:dst=0
bne.w failBMON
rts
dftstBMON: tst.b d4
beq.b dsncsBMON
moveq #%111,d2
and.w d6,d2
bsr.b dfp7BMON
move.b #":",(a0)+
move.w d6,d0
lsr.w #7,d0
and.w #%111,d0
bra.b dfp5BMON
dsncsBMON: move.w d6,d2
lsr.w #7,d2
and.w #%111,d2
tst.b d3
bne.b dfp7BMON ;show fp0,fp0
cmp.b d0,d2
beq.b dfp4BMON
dfp7BMON: move.w d2,d0
move.b #",",(a0)+
dfp5BMON: move.b #"f",(a0)+
move.b #"p",(a0)+
moveq #"0",d2
add.b d0,d2
move.b d2,(a0)+
dfp4BMON: rts
dfmovemxBMON=*-dissubsBMON
move.w #$c700,d0
and.w (a5),d0
cmp.w #$c000,d0 ;fmovem fpx?
bne.w failBMON
move.w (a5)+,d3
btst #13,d3
bne.b dfmovm1BMON
bsr doeaBMON
move.b #",",(a0)+
bra dofprxBMON
dfmovm1BMON:bsr dofprxBMON
bra dotoeaBMON
dfmovemlBMON=*-dissubsBMON
st d5
bra.b dfmovemBMON
dfmovelBMON=*-dissubsBMON
sf d5 ;no fmovem
dfmovemBMON:move.w #$c3ff,d0
and.w (a5),d0
cmp.w #$8000,d0
bne.w failBMON
move.b #%010,imsizeBMON ;long
move.w (a5)+,d6
eor.w d0,d6
btst #10,d6
sne d4
btst #11,d6
sne d0
add.b d0,d4
btst #12,d6
sne d0
add.b d0,d4 ;singleflag:0:0,-1:1,-2:2,-3:3
beq.w failBMON ;0 fpcrBMON
moveq #%111000,d0
and.w d1,d0 ;Dn?
bne.b nofdregBMON
cmp.b #-1,d4 ;1 fpcrBMON?
bne.w failBMON
nofdregBMON:subq.w #%001000,d0 ;An?
bne.b nofaregBMON
cmp.b #-1,d4 ;1 fpcrBMON?
bne.w failBMON
btst #10,d6 ;fpcrBMON=fpiarBMON?
beq.w failBMON
nofaregBMON:bclr #13,d6
beq.b tofpcrBMON
bsr.b dofpcrBMON
bra dotoeaBMON
tofpcrBMON: bsr doeaBMON
move.b #",",(a0)+
dofpcrBMON: move.b #"f",(a0)+
move.b #"p",(a0)+
moveq #"c",d0
bclr #12,d6
bne.b fpcr0BMON
moveq #"s",d0
bclr #11,d6
bne.b fpcr0BMON
move.b #"i",(a0)+
moveq #"a",d0
bclr #10,d6
beq.w failBMON
fpcr0BMON: move.b d0,(a0)+
move.b #"r",(a0)+
tst.w d6
beq.b fpsinglBMON
tst.b d5 ;fmovem?
beq.w failBMON
move.b #"/",(a0)+
bra.b dofpcrBMON
fpsinglBMON:rts
dfmovecrBMON=*-dissubsBMON
move.w (a5),d0
and.w #$fc40,d0
cmp.w #$5c00,d0
bne.w failBMON
moveq #$003f,d0
and.w (a5),d0
move.w d0,d1
beq.b dfmk1xBMON
cmp.b #$30,d0
bcc.w dfmk3xBMON
cmp.b #$0f,d0
bhi.w failBMON
cmp.b #$0b,d0
bcs.w failBMON
sub.b #$0b-1,d1
bra.b dfmk1xBMON
dfmk3xBMON: sub.b #$30-($0f-$0b)-2,d1
dfmk1xBMON: move.b #"#",(a0)+
bsr.w hextoa_BMON
move.w (a5)+,d0
bsr.w optofpx79BMON
move.l linebufBMON,a0
lea.l 40(a0),a0
move.b #";",(a0)+
lea fmconstBMON(pc),a1
cmp.b #10,d1 ;Pi..100
bls.b skipcrBMON
bsr.b dfmk0BMON
moveq #0,d0
sub.b #9,d1 ;1E4..1E4096
bset d1,d0
bra.w hextodBMON
skipcrBMON: tst.b (a1)+
bpl.b skipcrBMON
dbf d1,skipcrBMON
dfmk0BMON: bra.w txttobufBMON
dpccodewordrelBMON=*-dissubsBMON
moveq #-16,d0 ;$fff0 16 mmu ccodesBMON
and.w (a5),d0
bne.w failBMON
move.w (a5)+,d0
bsr.w dopccBMON
bra.b dfcc0BMON
dfccodewordrelBMON=*-dissubsBMON
moveq #-32,d0 ;$ffe0 32 fpu ccodesBMON
and.w (a5),d0
bne.w failBMON
move.w (a5)+,d0
bsr.w dofccBMON
dfcc0BMON: bsr.w opsposBMON
bsr.w opdx02BMON
move.b #",",(a0)+
move.w (a5)+,d0
lea -2(a5,d0.w),a1 ;instrlen:4bytesBMON (oma bug)
bra.b wbx2BMON
ccodewordrelBMON=*-dissubsBMON
move.w d1,d0
bsr.w doccBMON
wbx4BMON: bsr.w opsposBMON
bsr.w opdx02BMON
move.b #",",(a0)+
bra.b wbx3BMON
wordccBMON=*-dissubsBMON
move.w d1,d0
bsr.w doccBMON
wordcc0BMON:bsr.w chr2bufBMON
dc.w ".w" ;bxx.w
bsr.w opsposBMON
wordbxxBMON=*-dissubsBMON
wbx3BMON: move.w (a5)+,d0
lea -2(a5,d0.w),a1
wbx2BMON: move.l a1,d0
bra.w hextoa_BMON ;bra.w longtoa_BMON
longccBMON=*-dissubsBMON
move.w d1,d0
bsr.w doccBMON
longcc0BMON:bsr.w chr2bufBMON
dc.w ".l" ;bxx.l
bsr.w opsposBMON
longbxxBMON=*-dissubsBMON
move.l (a5)+,d0
lea -4(a5,d0.l),a1
bra.b wbx2BMON
shortccBMON=*-dissubsBMON
move.w d1,d0
bsr.w doccBMON
bsr.w chr2bufBMON
dc.w ".b"
bsr.w opsposBMON
shortbxxBMON=*-dissubsBMON
move.b d1,d0
ext.w d0
lea (a5,d0.w),a1
bra.b wbx2BMON
dbrapccBMON=*-dissubsBMON
move.w d1,d0
bsr.w dopccBMON
bra.b dbra0BMON
dbrafccBMON=*-dissubsBMON
move.w d1,d0
bsr.w dofccBMON
dbra0BMON: btst #6,d1
beq.b wordcc0BMON
bra.b longcc0BMON
eatoaxBMON=*-dissubsBMON
bsr.w doeaBMON
bra.w optoax9bBMON
ea2todxBMON=*-dissubsBMON
move.b #2,imsizeBMON ;68020:chk.l #i.l,<ea>
bra.b ea2dxBMON
eatodxBMON=*-dissubsBMON
move.b #1,imsizeBMON
ea2dxBMON:
size67eatodxBMON=*-dissubsBMON
bsr.w doeaBMON
bra.w optodx9bBMON
dxtoeaBMON=*-dissubsBMON ;no im possible
bsr.w opdx9bBMON
move.w #$f1c0,d0
and.w d1,d0
cmp.w #$0100,d0 ;btst: pcrel allowed
beq.b dxtea0BMON
bra.w dotoeaBMON
dxtea0BMON: move.b #",",(a0)+
bra.w doeaBMON
iwordtoccrBMON=*-dissubsBMON
move.b #"#",(a0)+ ;8/16?
moveq #0,d0
move.b (a5)+,d0
bne.w failBMON
move.b (a5)+,d0
bsr.w hextoa_BMON ;bsr.w bytetoa_BMON
bra.w optoccrBMON
iwordtosrBMON=*-dissubsBMON
bsr.b iwrdBMON
bra.w optosrBMON
toiwordBMON:move.b #",",(a0)+
iwordBMON=*-dissubsBMON
iwrdBMON: move.b #"#",(a0)+
moveq #0,d0
move.w (a5)+,d0
bra.w hextoa_BMON ;bra.w wordtoa_BMON
dlpstopBMON=*-dissubsBMON
cmp.w #$01c0,(a5)+
beq.b iwrdBMON
bra.w failBMON
dtblBMON=*-dissubsBMON
move.w (a5),d0
and.w #$8238,d0
bne.w failBMON
move.w (a5),d0
moveq #"s",d3
btst #11,d0
bne.b dtblsBMON
moveq #"u",d3
dtblsBMON: move.b d3,(a0)+
btst #10,d0
beq.b dtblrBMON
move.b #"n",(a0)+
dtblrBMON: bsr.w siz67d0BMON ;setsBMON imsizeBMON,del:d0
move.w (a5)+,d3
btst #8,d3 ;datareg|eamode
beq.b dtbldatBMON
moveq #%111111,d0
and.w d3,d0
bne.w failBMON
bsr.w doeaBMON
bra.b dtblregBMON
dtbldatBMON:bsr.w opdx02BMON
move.b #":",(a0)+
move.b #"d",(a0)+
move.w d3,d0
bsr.w op0xx02BMON
dtblregBMON:move.w d3,d0
rol.w #4,d0
move.b #",",(a0)+
move.b #"d",(a0)+
bra.w op0xx02BMON
inibtoeaBMON=*-dissubsBMON
move.b #"#",(a0)+
move.w (a5)+,d0
and.l #%11111,d0 ;#0-31(7)
bsr.w hextodBMON
move.w #$ffc0,d0
and.w d1,d0
cmp.w #$0800,d0 ;btst: pcrel allowed
beq.b inibea0BMON
bra.w dotoeaBMON
inibea0BMON:move.b #",",(a0)+
bra.w doeaBMON
dpccodeeaBMON=*-dissubsBMON
moveq #-16,d0
and.w (a5),d0
bne.w failBMON
move.w (a5)+,d0
bsr.w dopccBMON
bra.b ccode0BMON
fccodeeaBMON=*-dissubsBMON
moveq #-32,d0
and.w (a5),d0
bne.w failBMON
move.w (a5)+,d0
bsr.w dofccBMON
bra.b ccode0BMON
ccodeeaBMON=*-dissubsBMON
move.w d1,d0
bsr.w doccBMON
ccode0BMON: bsr.w opsposBMON
srceaBMON=*-dissubsBMON
bra.w doeaBMON
imovesBMON=*-dissubsBMON
move.w (a5)+,d3
move.w #$07ff,d0
and.w d3,d0
bne.w failBMON
bclr #11,d3
bne.b mvsrxBMON
bsr.w doeaBMON
move.b #",",(a0)+
bra.w mvcrxcfBMON
mvsrxBMON: bsr.w mvcrxcfBMON
bra.w dotoeaBMON
size67ixtoeaBMON=*-dissubsBMON
bsr.w immediateBMON
bra.w dotoeaBMON
size67i9btoeaBMON=*-dissubsBMON
bsr.w opi9bBMON
bra.w dotoeaBMON
size67x9btodx02BMON=*-dissubsBMON
btst #5,d1
beq.b shi9bBMON
bsr.w opdx9bBMON
bra.b shdx9bBMON
shi9bBMON: bsr.w opi9bBMON
shdx9bBMON: bra.w optodx02BMON
itrapBMON=*-dissubsBMON
move.b #"#",(a0)+
move.w d1,d0
bra.w nibtodBMON
srcdx02BMON=*-dissubsBMON
bra.w opdx02BMON
imuspBMON=*-dissubsBMON
btst #3,d1
beq.b imusp0BMON
bsr.w opuspBMON
bra.w optoax02BMON
imusp0BMON: bsr.w opax02BMON
bra.w optouspBMON
dpmovefdBMON=*-dissubsBMON ;68030mmu only
move.w (a5),d0
cmp.w #$4100,d0 ;40:tc
beq.w dpmvfdBMON
eor.w #%0000100100000000,d0 ;08:tt0,0c:tt1,48:srp,4c:crp
and.w #%1011101111111111,d0
bne.w failBMON
bra.b dpmvfdBMON ;bit9=0
dpmoveBMON=*-dissubsBMON
move.w #$01ff,d0
and.w (a5),d0
bne.w failBMON
dpmvfdBMON: move.w (a5)+,d3
bclr #8,d3 ;pmovefd bit
bclr #9,d3
bne.b pmvtoeaBMON
bsr.w doeaBMON
move.b #",",(a0)+
bra.b pmvregBMON
pmvtoeaBMON:bsr.b pmvregBMON
bra.w dotoeaBMON
pmvregBMON: lea pregsBMON(pc),a1
lsr.w #8,d3
pmvlpBMON: move.b (a1)+,d0
beq.w failBMON
cmp.b d3,d0
beq.b pmvfndBMON
pmvscanBMON:btst #7,(a1)+
beq.b pmvscanBMON
bra.b pmvlpBMON
pmvfndBMON: bra.w txttobufBMON
didbcacBMON=*-dissubsBMON ;68040
didb0BMON: lsr.w #6,d1
moveq #3,d0
and.w d1,d0
move.b idctxBMON(pc,d0.w),(a0)+
move.b #"c",(a0)+
rts
idctxBMON: dc.l "ndib" ;nc,dc,ic,bc
didbindBMON=*-dissubsBMON
move.w d1,-(a7)
bsr.b didb0BMON
move.w (a7)+,d1
bra.w toaindirectBMON
dpflush40BMON=*-dissubsBMON ;pflush,ptestr,ptestw
bra.w aindirectBMON
imovecBMON=*-dissubsBMON
move.w (a5)+,d3
btst #0,d1
bne.b toctrlBMON
bsr.b mvcregsBMON
move.b #",",(a0)+
bra.b mvcrxcfBMON
toctrlBMON: bsr.b mvcrxcfBMON
move.b #",",(a0)+
mvcregsBMON:lea cregsBMON(pc),a1
move.w d3,d1
and.w #$0fff,d1
nxtctrlBMON:cmp.w (a1),d1
beq.b mvcctrlBMON
tst.w (a1)
addq.w #6,a1
bne.b nxtctrlBMON
bra.w failBMON
mvcctrlBMON:addq.w #2,a1
move.b (a1)+,(a0)+
move.b (a1)+,(a0)+
tst.b (a1)
beq.b ctrl3chBMON
move.b (a1)+,(a0)+
tst.b (a1)
beq.b ctrl3chBMON
move.b (a1),(a0)+
ctrl3chBMON:rts
mvcrxcfBMON:move.w d3,d0 ;movec,movesBMON
dbfiregBMON:and.w #$f000,d0 ;bitfield
rol.w #4,d0
dbytregBMON:add.b #"0",d0
move.b #"a",(a0)+
bclr #3,d0
bne.b mvcaxBMON
addq.b #"d"-"a",-1(a0)
mvcaxBMON: move.b d0,(a0)+
rts
dbfieldtodxBMON=*-dissubsBMON
move.w (a5)+,d2
btst #15,d2
bne.w failBMON
bsr.b dbfi3BMON
move.b #",",(a0)+
move.w d2,d0
bra.b dbfiregBMON
ddxtobfieldBMON=*-dissubsBMON
move.w (a5),d0
btst #15,d0
bne.w failBMON
bsr.b dbfiregBMON
move.b #",",(a0)+
move.w (a5)+,d2
bra.b dbfi3BMON
dbfieldBMON=*-dissubsBMON
move.w (a5)+,d2
move.w d2,d0
and.w #$f000,d0
bne.w failBMON
dbfi3BMON: bsr.w doeaBMON
move.b #"{",(a0)+
move.w d2,d0
lsr.w #6,d0
bsr.b dbfi2BMON
move.b #":",(a0)+
move.w d2,d0
bsr.b dbfi2BMON
move.b #"}",(a0)+
rts
dbfi2BMON: btst #11-6,d0
bne.b dbfi1BMON
and.b #%11111,d0
bne.b no32BMON
moveq #32,d0
no32BMON: bra.w bytetodBMON
dbfi1BMON: btst #10-6,d0 ;y00xxxy00xxx
bne.w failBMON
btst #9-6,d0
bne.w failBMON
move.b #"d",(a0)+
and.b #%111,d0
add.b #"0",d0
move.b d0,(a0)+
rts
dbkptBMON=*-dissubsBMON
move.b #"#",(a0)+
bra.w opxx02BMON
dpackBMON=*-dissubsBMON
btst #3,d1
beq.b dpadxBMON
bsr.w chr2bufBMON
dc.w "-("
bsr.w opax02BMON
bsr.w chr4bufBMON
dc.l "),-("
bsr.w opax9bBMON
move.b #")",(a0)+
bra.b dpad0BMON
dpadxBMON: bsr.w opdx02BMON
bsr.w optodx9bBMON
dpad0BMON: bra.w toiwordBMON
dmov16BMON=*-dissubsBMON
move.w (a5),d2
and.w #$8fff,d2
cmp.w #$8000,d2
bne.w failBMON
bsr.w aindirectpostBMON
move.w (a5)+,d1
rol.w #4,d1
bra.w toaindirectpostBMON
dmov162BMON=*-dissubsBMON
moveq #%010000,d2 ;(ax)
bclr #4,d1
bne.b dmov1BMON
moveq #%011000,d2 ;(ax)+
dmov1BMON: bclr #3,d1
beq.b dmov0BMON
bsr.b dmov2BMON
or.w d2,d1
bra.w dotoeaBMON
dmov0BMON: or.w d2,d1
bsr.w doeaBMON
move.b #",",(a0)+
dmov2BMON: bra.w abslongBMON
imoveBMON=*-dissubsBMON
move.w d1,d0
and.w #%0011000000000000,d0
rol.w #4,d0
bne.b imo0BMON
sf d7
rts
imo0BMON: lea sizemovBMON(pc),a1
move.b (a1,d0.w),(a0)+
move.b 4(a1,d0.w),imsizeBMON
bsr.w opsposBMON
bsr.w doeaBMON
move.w d1,d0
rol.w #7,d0
and.w #%111,d0
move.w d1,d3
lsr.w #3,d3
and.w #%111000,d3
or.w d3,d0
move.w d0,d1
bra.w dotoeaBMON
imoveqBMON=*-dissubsBMON
move.b #"#",(a0)+
moveq #0,d0
move.b d1,d0
bsr.w hextoa_BMON ;bsr.w bytetoa_BMON
bra.w optodx9bBMON
icallmBMON=*-dissubsBMON
tst.b (a5)
bne.w failBMON
move.w d1,-(a7)
move.b #"#",(a0)+
moveq #0,d0
move.b (a5)+,d0
bne.w failBMON
move.b (a5)+,d0
bsr.w hextoa_BMON ;bsr.w bytetoa_BMON
move.w (a7)+,d1
bra.w dotoeaBMON
dcasBMON=*-dissubsBMON
bsr.w opsposBMON
move.w (a5),d0
and.w #$0e38,d0
bne.w failBMON
move.w (a5),d0
move.b #"d",(a0)+
bsr.w op0xx02BMON
move.b #",",(a0)+
move.w (a5)+,d0
lsr.w #6,d0
move.b #"d",(a0)+
bsr.w op0xx02BMON
bra.w dotoeaBMON
dcas2BMON=*-dissubsBMON
moveq #"w",d2
btst #9,d1
beq.b dca0BMON
moveq #"l",d2
dca0BMON: move.b d2,(a0)+
bsr.w opsposBMON
move.l (a5),d2
and.l #$0e380e38,d2
bne.w failBMON
move.l (a5),d2
bsr.b casopBMON
move.b #",",(a0)+
lsr.l #6,d2
bsr.b casopBMON
bsr.w chr2bufBMON
dc.w ",("
move.w (a5)+,d0
bsr.w dbfiregBMON
bsr.w chr3bufBMON
dc.l "):("<<8
move.w (a5)+,d0
bsr.w dbfiregBMON
move.b #")",(a0)+
rts
casopBMON: move.l d2,d0
swap d0
move.b #"d",(a0)+
bsr.w op0xx02BMON
move.w d2,d0
bsr.w chr2bufBMON
dc.w ":d"
bra.w op0xx02BMON
dchk2BMON=*-dissubsBMON
move.w (a5)+,d2
btst #11,d2
beq.w failBMON
bra.b dchkcmpBMON
dcmp2BMON=*-dissubsBMON
move.w (a5)+,d2
btst #11,d2
bne.w failBMON
dchkcmpBMON:bsr.w doeaBMON
move.b #",",(a0)+
move.w d2,d0
bra.w dbfiregBMON
drtmBMON=*-dissubsBMON
moveq #$0f,d0
and.w d1,d0
bra.w dbytregBMON
dtpccsizeBMON=*-dissubsBMON
move.w d1,d0
bsr.w doccBMON
dtpc2BMON: move.b #".",(a0)+
moveq #"w",d0
btst #0,d1
beq.b dtpc1BMON
moveq #"l",d0
dtpc1BMON: move.b d0,(a0)+
bsr.w opsposBMON
move.b #"#",(a0)+
moveq #0,d0
btst d0,d1
bne.b dtpc0BMON
move.w (a5)+,d0
bra.w hextoa_BMON ;bra.w wordtoa_BMON
dtpc0BMON: move.l (a5)+,d0
bra.w hextoa_BMON ;bra.w longtoa_BMON
dtpccBMON=*-dissubsBMON
move.w d1,d0
bra.w doccBMON
dtpfccsizeBMON=*-dissubsBMON
bsr.b dtpfcc0BMON
bra.b dtpc2BMON
dtpfccBMON=*-dissubsBMON
dtpfcc0BMON:moveq #-32,d0 ;$ffe0 ;32 fpu ccodesBMON
and.w (a5),d0
bne.w failBMON
move.w (a5)+,d0
bra.w dofccBMON
dtppccsizeBMON=*-dissubsBMON
bsr.b dtppcc0BMON
bra.b dtpc2BMON
dtppccBMON=*-dissubsBMON
dtppcc0BMON:moveq #-16,d0 ;$fff0 ;16 mmu ccodesBMON
and.w (a5),d0
bne.w failBMON
move.w (a5)+,d0
bra.w dopccBMON
dfnopBMON=*-dissubsBMON
tst.w (a5)+ ;4byte command
seq d7
rts
dpvalidBMON=*-dissubsBMON
moveq #-8,d0
and.w (a5),d0
cmp.w #$2c00,d0
bne.w failBMON
move.w (a5)+,d0
move.b #"a",(a0)+
bsr.w op0xx02BMON
bra.w dotoeaBMON
dpflushaBMON=*-dissubsBMON
cmp.w #$2400,(a5)+
seq d7
rts
dpflushrBMON=*-dissubsBMON
cmp.w #$a000,(a5)+
bne.w failBMON
bra.w doeaBMON
dpflushsBMON=*-dissubsBMON
cmp.b #$34,(a5)
beq.b dpfl4BMON
dpfl5BMON: bra.w failBMON
dpflushBMON=*-dissubsBMON
cmp.b #$30,(a5)
bne.b dpfl5BMON
dpfl4BMON: move.w (a5)+,d0
moveq #%00011000,d1
and.w d0,d1
bne.b dpfl1BMON
moveq #%00000111,d1
moveq #"s",d2
and.w d0,d1
beq.b dpfl2BMON
moveq #"d",d2
subq.b #1,d1
bne.w failBMON
dpfl2BMON: move.b d2,(a0)+
bsr.w chr2bufBMON
dc.w "fc"
bra.b dpfl3BMON
dpfl1BMON: cmp.w #%00011000,d1 ;illegal
beq.w failBMON
moveq #"#",d1
bclr #3,d0
beq.b dpfl0BMON
moveq #"d",d1
dpfl0BMON: move.b d1,(a0)+
bsr.w nibtoaBMON
dpfl3BMON: bsr.w chr2bufBMON
dc.w ",#"
lsr.w #5,d0
bra.w op0xx02BMON
dploadBMON=*-dissubsBMON
move.w (a5),d0
and.w #$fdf8,d0
cmp.w #$2010,d0
bne.w failBMON
dpte0BMON: move.w (a5)+,d0
move.b #"r",(a0)
btst #9,d0
bne.b dplo0BMON
addq.b #"w"-"r",(a0)
dplo0BMON: bsr.w opsposBMON
move.b #"#",(a0)+
bsr.w nibtoaBMON
bra.w dotoeaBMON
dptestBMON=*-dissubsBMON
move.w (a5),d0
and.w #$e118,d0
cmp.w #$8110,d0
bne.w failBMON
move.w (a5),d2
bsr.b dpte0BMON
bsr.w chr2bufBMON
dc.w ",#"
move.w d2,d0
rol.w #6,d0
moveq #%111,d2
and.b d0,d2
beq.w failBMON ;level 0
bsr.w nibtoaBMON
bsr.w chr2bufBMON
dc.w ",a"
rol.w #5,d0
bclr #3,d0
bra.w nibtoaBMON
ddivsllBMON=*-dissubsBMON
move.w (a5)+,d2
bchg #10,d2 ;dn:dm mode,set g=1
bne.w failBMON
bsr.b dmul5BMON
bra.b ddivlBMON
ddivullBMON=*-dissubsBMON
move.w (a5)+,d2
bchg #10,d2 ;dn:dm mode,set g=1
bne.w failBMON
bsr.b dmul4BMON
ddivlBMON: sub.b d2,d1
and.b #%111,d1 ;dm=dn
beq.w failBMON
rts
dmulslBMON=*-dissubsBMON
dmul3BMON: move.w (a5)+,d2
dmul5BMON: btst #11,d2
beq.w failBMON
bra.b dmul1BMON
dmululBMON=*-dissubsBMON
dmul2BMON: move.w (a5)+,d2
dmul4BMON: btst #11,d2
bne.w failBMON
dmul1BMON: move.w #$83f8,d0
and.w d2,d0
bne.w failBMON
move.b #%10,imsizeBMON ;longwordsBMON
bsr.w doeaBMON
move.b #",",(a0)+
move.w d2,d1
btst #10,d2
beq.b dmul0BMON
bsr.w opdx02BMON
move.b #":",(a0)+
rol.w #4,d1
bra.w opdx02BMON
dmul0BMON: rol.w #4,d1
bsr.w opdx02BMON
sub.b d2,d1
and.b #%111,d1 ;mulxl ea,dn:dm=dn
bne.w failBMON
rts
icmpmBMON=*-dissubsBMON
bsr.w aindirectpostBMON
rol.w #7,d1 ;(ax)+
bra.w toaindirectpostBMON
xbcdBMON=*-dissubsBMON
bclr #14,d1
bclr #3,d1 ;dx
beq.b xbcdxBMON
bset #5,d1 ;-(ax)
bset #14,d1
xbcdxBMON: bsr.w doeaBMON ;no im possible
rol.w #7,d1
bra.w dotoeaBMON
size67adsbxBMON=*-dissubsBMON
bclr #14,d1
bclr #12,d1
bclr #3,d1 ;dx
beq.b adsbxdxBMON
bset #14,d1 ;-(ax)
bset #5,d1
adsbxdxBMON:bsr.w doeaBMON
rol.w #7,d1
bra.w dotoeaBMON
size6movepBMON=*-dissubsBMON
bset #5,d1 ;d(ax)
btst #7,d1
beq.b mptodxBMON
bsr.w opdx9bBMON
bra.w dotoeaBMON
mptodxBMON: bsr.w doeaBMON
bra.w optodx9bBMON
imovemBMON=*-dissubsBMON
move.w (a5)+,d3 ;regbitsBMON
btst #10,d1 ;dir
bne.b torxBMON
bsr.w dorxBMON
bra.w dotoeaBMON
torxBMON: bsr.w doeaBMON
move.b #",",(a0)+
bra.w dorxBMON
dx9btodx02BMON=*-dissubsBMON
bsr.w opdx9bBMON
bra.w optodx02BMON
ax9btoax02BMON=*-dissubsBMON
bsr.w opax9bBMON
bra.w optoax02BMON
dx9btoax02BMON=*-dissubsBMON
bsr.w opdx9bBMON
bra.w optoax02BMON
dlinklgBMON=*-dissubsBMON
bsr.b iunl0BMON
bsr.w chr2bufBMON
dc.w ",#"
bra.w dtpc0BMON
ilinkBMON=*-dissubsBMON
bsr.b iunl0BMON
bra.w toiwordBMON
iunlkBMON=*-dissubsBMON
iunl0BMON: bra.w opax02BMON
size8eatoax9bBMON=*-dissubsBMON
bsr.w doeaBMON
bra.w optoax9bBMON
size8BMON: btst #8,d1
beq.b siz60BMON
bra.b siz61BMON
size6BMON: btst #6,d1
bne.b siz61BMON
siz60BMON: moveq #"w",d0
move.b #1,imsizeBMON
bra.b siz62BMON
siz61BMON: moveq #"l",d0
move.b #2,imsizeBMON
siz62BMON: move.b #".",(a0)+
move.b d0,(a0)+
bra.b opsposBMON
size9a_BMON:move.w d1,d0 ;01.b,10.w,11.l,00.*
lsr.w #3,d0
sub.w #%01000000,d0
bra.b si9aBMON
size9aBMON: move.w d1,d0 ;00.b,01.w,10.l,11.*
lsr.w #3,d0
bra.b si9aBMON
size67BMON: move.w d1,d0
siz67d0BMON:
si9aBMON: and.w #%11000000,d0
cmp.w #%11000000,d0
beq.w failBMON
lsr.w #6,d0
move.b d0,imsizeBMON ;00.b,01.w,10.l,11.*
move.b #".",(a0)+
move.b sizetxtBMON(pc,d0.w),(a0)+
opsposBMON:
move.b #' ',(a0)+
btst #1,modeBMON
beq.b .notab
move.l linebufBMON,a0
lea.l 23(a0),a0 ;ftrapngle.l
.notab rts
sizetxtBMON:dc.l "bwl*"
opi9bBMON: move.b #"#",(a0)+
move.w d1,d0
and.w #%111000000000,d0
rol.w #7,d0
bne.b i9b0BMON
moveq #8,d0
i9b0BMON: bra.w nibtodBMON
optoax9bBMON:move.b #",",(a0)+
opax9bBMON: move.b #"a",(a0)+
bra.b opxxBMON
optodx9bBMON:move.b #",",(a0)+
opdx9bBMON: move.b #"d",(a0)+
opxxBMON: move.w d1,d0
and.w #%111000000000,d0
rol.w #7,d0
add.b #"0",d0
move.b d0,(a0)+
rts
optoax02BMON:move.b #",",(a0)+
opax02BMON: move.b #"a",(a0)+
bra.b opxx02BMON
optodx02BMON:move.b #",",(a0)+
opdx02BMON: move.b #"d",(a0)+
opxx02BMON: move.w d1,d0
op0xx02BMON:and.w #%111,d0
add.b #"0",d0
move.b d0,(a0)+
rts
optofpx79BMON:move.b #",",(a0)+
opfpx79BMON:bsr.b chr2bufBMON
dc.w "fp"
lsr.w #7,d0
bra.b op0xx02BMON
optouspBMON:move.b #",",(a0)+
opuspBMON: lea usptxtBMON(pc),a1
bra.b txttobufBMON
optoccrBMON:move.b #",",(a0)+
opccrBMON: lea ccrtxtBMON(pc),a1
bra.b txttobufBMON
optosrBMON: move.b #",",(a0)+
opsrBMON: lea srtxtBMON(pc),a1
txttobufBMON:
move.b (a1)+,(a0)
bclr #7,(a0)+
beq.b txttobufBMON
txtqBMON: rts
chr2bufBMON:move.l a1,-(a7) ;copiesBMON 2 chrsBMON below bsr chr2bufBMON
move.l 4(a7),a1
move.b (a1)+,(a0)+
move.b (a1)+,(a0)+
move.l (a7)+,a1
addq.l #2,(a7)
rts
chr3bufBMON: ;copiesBMON 3 chrsBMON below bsr chr3bufBMON
chr4bufBMON:move.l a1,-(a7) ;copiesBMON 4 chrsBMON below bsr chr4bufBMON
move.l 4(a7),a1
move.b (a1)+,(a0)+
move.b (a1)+,(a0)+
move.b (a1)+,(a0)+
tst.b (a1)
beq.b chr0BMON
move.b (a1)+,(a0)+
chr0BMON: move.l (a7)+,a1
addq.l #4,(a7)
rts
bcpltobufBMON:move.b (a1)+,d0
bcpl0BMON: subq.b #1,d0
bmi.b bcpl1BMON
move.b (a1)+,(a0)+
bra.b bcpl0BMON
bcpl1BMON: rts
dorxBMON: move.w d1,d0
and.w #%111000,d0
cmp.w #%100000,d0 ;-(ax)
bne.b drx8BMON
moveq #16-1,d2
drx9BMON: lsr.w #1,d3
roxl.w #1,d0
dbf d2,drx9BMON
move.w d0,d3
drx8BMON: sf d5
clr.w d2
moveq #"d",d0
bsr.b drx0BMON
moveq #"a",d0
drx0BMON: moveq #8,d4
drx1BMON: tst.w d4
beq.b drx5BMON
btst d2,d3
bne.b drx2BMON
addq.w #1,d2
subq.w #1,d4
bra.b drx1BMON
drx2BMON: tas d5
beq.b drx3BMON
move.b #"/",(a0)+
drx3BMON: move.b d0,(a0)+
move.b d2,(a0)
add.b #"0",(a0)
bclr #3,(a0)+
sf d6
drx4BMON: addq.w #1,d2
subq.w #1,d4
beq.b drx6BMON
btst d2,d3
beq.b drx6BMON
st d6
bra.b drx4BMON
drx6BMON: tst.b d6
beq.b drx7BMON
move.b #"-",(a0)+
move.b d0,(a0)+
move.b d2,(a0)
add.b #"0"-1,(a0)
bclr #3,(a0)+
drx7BMON: tst.w d4
beq.b drx5BMON
subq.w #1,d4
addq.w #1,d2
bra.b drx1BMON
drx5BMON: rts
dofprxBMON: move.w d1,d0
and.w #%111000,d0
beq.w failBMON ;Dn
cmp.w #%001000,d0 ;An
beq.w failBMON
moveq #%01110000,d6
and.l d3,d6 ;posBMON
cmp.b d3,d6
beq.b dfprxaBMON
moveq #-1,d6 ;neg:bad dynamic mask
dfprxaBMON: lsr.b #4,d6
add.b #"0",d6 ;dynamic mask
cmp.w #%100000,d0 ;-(ax)
bne.b dfprx8BMON
btst #13,d3 ;dr field
beq.w failBMON ;to FPx?
btst #12,d3 ;mode
bne.w failBMON ;no predec mode?
moveq #8-1,d2
dfprx9BMON: lsr.b #1,d3
roxl.b #1,d0
dbf d2,dfprx9BMON
move.b d0,d3
bra.b dfprx0BMON
dfprx8BMON: btst #12,d3 ;mode
beq.w failBMON ;predec mode?
dfprx0BMON: btst #11,d3
beq.b dfpstatBMON
tst.l d6
bmi.w failBMON ;bad dynamic mask
move.b #"d",(a0)+
move.b d6,(a0)+
dfprx5BMON: rts
dfpstatBMON:sf d0
moveq #8-1,d2
dfprx1BMON: tst.w d2
bmi.b dfprx5BMON
btst d2,d3
bne.b dfprx2BMON
subq.w #1,d2
bra.b dfprx1BMON
dfprx2BMON: tas d0
beq.b dfprx3BMON
move.b #"/",(a0)+
dfprx3BMON: move.b #"f",(a0)+
move.b #"p",(a0)+
move.b #"7",(a0)
sub.b d2,(a0)+
sf d6
dfprx4BMON: subq.w #1,d2
bmi.b dfprx6BMON
btst d2,d3
beq.b dfprx6BMON
st d6
bra.b dfprx4BMON
dfprx6BMON: tst.b d6
beq.b dfprx7BMON
move.b #"-",(a0)+
move.b #"f",(a0)+
move.b #"p",(a0)+
move.b #"7"-1,(a0)
sub.b d2,(a0)+
dfprx7BMON: tst.w d2
bmi.b dfprx5BMON
subq.w #1,d2
bra.b dfprx1BMON
doccBMON: lea ccodetxtBMON(pc),a1
and.w #%111100000000,d0
lsr.w #7,d0
lea (a1,d0.w),a1
move.b (a1)+,(a0)+
tst.b (a1)
beq.b docc0BMON
move.b (a1)+,(a0)+
docc0BMON: rts
dopccBMON: lea pccodetxtBMON(pc),a1
and.w #%001111,d0
add.w d0,d0
lea (a1,d0.w),a1
move.b (a1)+,(a0)+
move.b (a1)+,(a0)+
rts
dofccBMON: lea fccodetxtBMON(pc),a1
and.w #%011111,d0
add.w d0,d0
add.w d0,d0
lea (a1,d0.w),a1
move.b (a1)+,(a0)+ ;1..4 charsBMON
tst.b (a1)
beq.b dofcc0BMON
move.b (a1)+,(a0)+
tst.b (a1)
beq.b dofcc0BMON
move.b (a1)+,(a0)+
tst.b (a1)
beq.b dofcc0BMON
move.b (a1)+,(a0)+
dofcc0BMON: rts
dotoeaBMON: move.w d1,d0
and.w #%111111,d0
cmp.w #%111001,d0 ;dest:(pc),d(pc),#xx invalid
bls.b doto0BMON
sf d7
rts
doto0BMON: move.b #",",(a0)+
doeaBMON: moveq #%111000,d0
and.w d1,d0
lsr.w #2,d0
pea eatabBMON(pc)
move.w eatabBMON(pc,d0.w),d0 ;ext.l obsolete
add.l d0,(a7)
rts
eatabBMON: dc.w ddirectBMON-eatabBMON
dc.w adirectBMON-eatabBMON
dc.w aindirectBMON-eatabBMON
dc.w aindirectpostBMON-eatabBMON
dc.w aindirectpreBMON-eatabBMON
dc.w aindirectdispBMON-eatabBMON
dc.w aindirectindexBMON-eatabBMON
dc.w mode7BMON-eatabBMON
ddirectBMON:move.b #"d",(a0)+
moveq #%000111,d0
and.w d1,d0
add.b #"0",d0
move.b d0,(a0)+
rts
adirectBMON:move.b #"a",(a0)+
moveq #%000111,d0
and.w d1,d0
add.b #"0",d0
move.b d0,(a0)+
rts
toaindirectBMON:
move.b #",",(a0)+
aindirectBMON:
move.b #"(",(a0)+
move.b #"a",(a0)+
moveq #%000111,d0
and.w d1,d0
add.b #"0",d0
move.b d0,(a0)+
move.b #")",(a0)+
bsr.w setbaseBMON
bra.w eavalBMON
toaindirectpostBMON:
move.b #",",(a0)+
aindirectpostBMON:
move.b #"(",(a0)+
move.b #"a",(a0)+
moveq #%000111,d0
and.w d1,d0
add.b #"0",d0
move.b d0,(a0)+
move.b #")",(a0)+
move.b #"+",(a0)+
bsr.w setbaseBMON
bra.w eavalBMON
aindirectpreBMON:
move.b #"-",(a0)+
move.b #"(",(a0)+
moveq #%000111,d0
and.w d1,d0
add.b #"0",d0
move.b #"a",(a0)+
move.b d0,(a0)+
move.b #")",(a0)+
bsr.w setbaseBMON
bra.w eavalBMON
aindirectdispBMON:
move.b #"(",(a0)+
move.w (a5),d0
bsr.w swordtoa_BMON
move.b #",",(a0)+
move.b #"a",(a0)+
moveq #%000111,d0
and.w d1,d0
add.b #"0",d0
move.b d0,(a0)+
move.b #")",(a0)+
bsr.w setbaseBMON
move.w (a5)+,d0
ext.l d0
add.l d0,baseregBMON
bra.w eavalBMON
aindirectindexBMON:
btst #0,(a5)
bne.w indfullBMON
bsr.w setbaseBMON
move.b #"(",(a0)+
move.w (a5),d0
bsr.w sbytetoa_BMON
ext.w d0
ext.l d0
add.l d0,baseregBMON
move.b #",",(a0)+
move.b #"a",(a0)+
moveq #%000111,d0
and.w d1,d0
add.b #"0",d0
move.b d0,(a0)+
move.b #",",(a0)+
moveq #"d",d0
btst #7,(a5)
beq.b ind0BMON
moveq #"a",d0
ind0BMON: move.b d0,(a0)+
moveq #%01110000,d0
and.b (a5),d0
lsr.b #4,d0
add.b #"0",d0
move.b d0,(a0)+
movem.l d1/a1,-(a7)
move.w #%11110000,d0
and.b (a5),d0
lsr.b #2,d0
lea regsBMON,a1
move.l (a1,d0.w),d1
move.b #".",(a0)+
moveq #"l",d0
btst #3,(a5)
bne.b ind1BMON
moveq #"w",d0
ext.l d1
ind1BMON: move.b d0,(a0)+
moveq #%00000110,d0
and.b (a5),d0
beq.b ind2BMON
lsr.b #1,d0
move.b #"*",(a0)+
move.b scaleBMON(pc,d0.w),(a0)+
ind2BMON: lsl.l d0,d1
add.l d1,baseregBMON
move.b #")",(a0)+
movem.l (a7)+,d1/a1
addq.w #2,a5
bra.w eavalBMON
scaleBMON: dc.l "1248"
pcindfullBMON:
indfullBMON:moveq #%00001000,d0
and.w (a5),d0
bne.w reservedBMON ;failBMON
moveq #%01000111,d0
and.w (a5),d0
cmp.b #%01000100,d0
bcc.w reservedBMON
cmp.b #%00000100,d0
beq.w reservedBMON
moveq #%00110000,d0
and.w (a5),d0
beq.w reservedBMON
move.w d2,-(a7)
move.w (a5)+,d2 ;full format extension
move.b #"(",(a0)+
moveq #%00000111,d0
and.w d2,d0
beq.b nomemindBMON
move.b #"[",(a0)+
nomemindBMON:
moveq #%111111,d0
and.w d1,d0
cmp.w #%111011,d0 ;pc indirect?
bne.b nopcindBMON
moveq #%00110000,d0
and.w d2,d0
lsr.w #4,d0
btst #7,d2
beq.b nozpcBMON
bsr.w displaceBMON
cmp.b #"[",-1(a0)
beq.b noidispBMON
move.b #",",(a0)+
noidispBMON:move.b #"z",(a0)+
bra.b dozpcBMON
nozpcBMON: subq.b #1,d0
beq.b dozpcBMON
subq.b #1,d0
beq.b nozpc1BMON
move.l a5,d0
add.l (a5)+,d0
subq.l #2,d0
bsr.w hextoa_BMON
; move.b #".",(a0)+
; move.b #"l",(a0)+
bra.b nozpc0BMON
nozpc1BMON: move.w (a5)+,d0
ext.l d0
add.l a5,d0
subq.l #4,d0
bsr.w hextoa_BMON
move.b #".",(a0)+
move.b #"w",(a0)+
nozpc0BMON: move.b #",",(a0)+
dozpcBMON: move.b #"p",(a0)+
move.b #"c",(a0)+
bra.b baseokBMON
nopcindBMON:moveq #%00110000,d0 ;baseBMON displacement
and.w d2,d0
lsr.w #4,d0
bsr.w displaceBMON
moveq #%000111,d0
and.w d1,d0
btst #7,d2 ;bsBMON
bne.b basesuprBMON
cmp.b #"[",-1(a0)
beq.b noidis2BMON
cmp.b #"(",-1(a0)
beq.b noidis2BMON
move.b #",",(a0)+
noidis2BMON:move.b #"a",(a0)+
add.b #"0",d0
move.b d0,(a0)+
bra.b baseokBMON
basesuprBMON:
tst.b d0
bne.w basfailBMON
baseokBMON:
btst #2,d2 ;postindex?
beq.b nopostBMON
move.b #"]",(a0)+
nopostBMON: btst #6,d2
bne.b indsuprBMON
cmp.b #"[",-1(a0)
beq.b indpreBMON
cmp.b #"(",-1(a0)
beq.b indpreBMON
move.b #",",(a0)+
indpreBMON: moveq #"d",d0
tst.w d2
bpl.b dindxBMON
moveq #"a",d0
dindxBMON: move.b d0,(a0)+
move.w #%0111000000000000,d0
and.w d2,d0
rol.w #4,d0
add.b #"0",d0
move.b d0,(a0)+
move.b #".",(a0)+
moveq #"l",d0
btst #11,d2
bne.b dind1BMON
moveq #"w",d0
dind1BMON: move.b d0,(a0)+
move.w #%0000011000000000,d0
and.w d2,d0
beq.b dind2BMON
rol.w #7,d0
move.b #"*",(a0)+
move.b scale3BMON(pc,d0.w),(a0)+
dind2BMON: bra.b indokBMON
scale3BMON: dc.l "1248"
indsuprBMON:move.w #%1111111000000000,d0
and.w d2,d0
bne.b indfailBMON
indokBMON: moveq #%00000111,d0
and.w d2,d0
beq.b nopreBMON
btst #2,d2
bne.b nopreBMON
move.b #"]",(a0)+
nopreBMON:
moveq #%00000011,d0 ;outer displacement
and.w d2,d0
beq.b nomemind2BMON
cmp.b #1,d0
beq.b nokomaBMON
move.b #",",(a0)+
nokomaBMON: bsr.b displaceBMON
nomemind2BMON:
move.b #")",(a0)+
indquitBMON:move.w (a7)+,d2
rts
indfailBMON:
basfailBMON:sf d7
bra.b indquitBMON
displaceBMON:
subq.b #1,d0
beq.b nullouterBMON
subq.b #1,d0
beq.b wordouterBMON
move.l (a5)+,d0
bsr.w hextoa_BMON
; move.b #".",(a0)+
; move.b #"l",(a0)+
rts
wordouterBMON:
move.w (a5)+,d0 ;upper word=0
bsr.w hextoa_BMON
move.b #".",(a0)+
move.b #"w",(a0)+
nullouterBMON:
rts
mode7BMON: moveq #%000111,d0
and.w d1,d0
add.w d0,d0
pea mod7tabBMON(pc)
move.w mod7tabBMON(pc,d0.w),d0
add.l d0,(a7)
rts
mod7tabBMON:dc.w absshortBMON-mod7tabBMON
dc.w abslongBMON-mod7tabBMON
dc.w pcindirectBMON-mod7tabBMON
dc.w pcindexBMON-mod7tabBMON
dc.w immediateBMON-mod7tabBMON
dc.w reservedBMON-mod7tabBMON
dc.w reservedBMON-mod7tabBMON
dc.w reservedBMON-mod7tabBMON
absshortBMON:
move.b #"(",(a0)+
moveq #0,d0
move.w (a5)+,d0
bsr.w hextoa_BMON
move.b #")",(a0)+
move.b #".",(a0)+
move.b #"w",(a0)+
rts
abslongBMON:move.b #"(",(a0)+
move.l (a5)+,d0
bsr.w hextoa_BMON
move.b #")",(a0)+
rts
pcindirectBMON:
move.b #"(",(a0)+
moveq #-2,d0
add.w (a5)+,d0
ext.l d0
add.l a5,d0
bsr.w hextoa_BMON
move.b #",",(a0)+
move.b #"p",(a0)+
move.b #"c",(a0)+
move.b #")",(a0)+
rts
pcindexBMON:btst #0,(a5)
bne.w pcindfullBMON
move.b #"(",(a0)+
move.w (a5),d0
ext.w d0
ext.l d0
add.l a5,d0
move.l d0,baseregBMON
bsr.w hextoa_BMON
move.b #",",(a0)+
move.b #"p",(a0)+
move.b #"c",(a0)+
move.b #",",(a0)+
moveq #"d",d0
btst #7,(a5)
beq.b pcind0BMON
moveq #"a",d0
pcind0BMON: move.b d0,(a0)+
moveq #%01110000,d0
and.b (a5),d0
lsr.b #4,d0
add.b #"0",d0
move.b d0,(a0)+
movem.l d1/a1,-(a7)
move.w #%11110000,d0
and.b (a5),d0
lsr.b #2,d0
lea regsBMON,a1
move.l (a1,d0.w),d1
move.b #".",(a0)+
moveq #"l",d0
btst #3,(a5)
bne.b pcind1BMON
moveq #"w",d0
ext.l d1
pcind1BMON: move.b d0,(a0)+
moveq #%00000110,d0
and.b (a5),d0
beq.b pcind2BMON
lsr.b #1,d0
move.b #"*",(a0)+
move.b scale2BMON(pc,d0.w),(a0)+
pcind2BMON: lsl.l d0,d1
add.l d1,baseregBMON
move.b #")",(a0)+
movem.l (a7)+,d1/a1
addq.w #2,a5
bra.w eavalBMON
scale2BMON: dc.l "1248"
immediateBMON:
move.b #"#",(a0)+
moveq #0,d0
move.w (a5)+,d0
tst.b imsizeBMON
bne.b imwordBMON
cmp.w #$ff,d0
bhi.b reservedBMON ;failBMON
bra.w hextoa_BMON
imwordBMON: cmp.b #%001,imsizeBMON
bne.b imlongBMON
bra.w hextoa_BMON
imlongBMON: cmp.b #%010,imsizeBMON
bne.b fpu4wrdBMON
swap d0
move.w (a5)+,d0
bra.w hextoa_BMON
imresvdBMON:cmp.b #%011,imsizeBMON
beq.b reservedBMON
fpu4wrdBMON:cmp.b #%100,imsizeBMON ;%1xx fpu imsizeBMON
bne.b fpu5wrdBMON
fpu4w0BMON: swap d0
move.w (a5)+,d0
bsr.w longtoa_BMON
fpu2w0BMON: move.l (a5)+,d0
bra.w longtoaBMON
fpu5wrdBMON:cmp.b #%101,imsizeBMON
beq.b reservedBMON
fpu6wrdBMON:cmp.b #%110,imsizeBMON
bne.b reservedBMON
bsr.b fpu4w0BMON
bra.b fpu2w0BMON
reservedBMON:
sf d7
rts
setbaseBMON:move.l a1,-(a7)
lea regsBMON,a1
moveq #%000111,d0
and.w d1,d0
lsl.w #2,d0
move.l 8*4(a1,d0.w),baseregBMON ;contentsBMON An
move.l (a7)+,a1
rts
eavalBMON:
btst #2,modeBMON
beq.b eaval1BMON
btst #2,dissignBMON
beq.b eaval1BMON
move.l a0,-(a7)
move.l baseregBMON,d0
move.l linebufBMON,a0
lea.l 54(a0),a0 ;longest movem.l .... !
move.b #";",(a0)+
tst.b ea2ndBMON
beq.b eaval0BMON
lea 10(a0),a0
eaval0BMON: bsr.w longtoa_BMON
st ea2ndBMON
move.l (a7)+,a0
eaval1BMON: rts
sbytetoa_BMON:move.l d0,-(a7)
btst #0,dissignBMON
beq.b sby0BMON
tst.b d0
bpl.b sby0BMON
neg.b d0
move.b #"-",(a0)+
sby0BMON: and.l #$ff,d0
btst #1,dissignBMON
beq.b sby1BMON
bsr.w hextodBMON
bra.b sby2BMON
sby1BMON: bsr.w hextoa_BMON ;bsr.w bytetoa_BMON
sby2BMON: move.l (a7)+,d0
rts
swordtoa_BMON:move.l d0,-(a7)
btst #0,dissignBMON
beq.b swo0BMON
tst.w d0
bpl.b swo0BMON
neg.w d0
move.b #"-",(a0)+
swo0BMON: and.l #$ffff,d0
btst #1,dissignBMON
beq.b swo1BMON
bsr.w hextodBMON
bra.b swo2BMON
swo1BMON: bsr.w hextoa_BMON ;bsr.w wordtoa_BMON
swo2BMON: move.l (a7)+,d0
rts
;----------------------------------------------------------
xopfailBMON=0 ;dummy
xnoopsBMON=1
xdcwopBMON=2
xeatoccrBMON=3
xeatosrBMON=4
xsrtoeaBMON=5
xwordbxxBMON=6
xwordccBMON=7
xshortbxxBMON=8
xshortccBMON=9
xeatoaxBMON=10
xeatodxBMON=11
xdxtoeaBMON=12
xiwordtoccrBMON=13
xiwordtosrBMON=14
xiwordBMON=15
xccodewordrelBMON=16
xinibtoeaBMON=17
xccodeeaBMON=18
xsrceaBMON=19
xsize67eatodxBMON=20
xsize8eatoax9bBMON=21
xsize67adsbxBMON=22
xsize67ixtoeaBMON=23
xsize67i9btoeaBMON=24
xsize67x9btodx02BMON=25
xitrapBMON=26
xsrcdx02BMON=27
ximuspBMON=28
ximoveBMON=29
ximoveqBMON=30
xicmpmBMON=31
xxbcdBMON=32
xsize6movepBMON=33
ximovemBMON=34
xdx9btodx02BMON=35
xax9btoax02BMON=36
xdx9btoax02BMON=37
xiunlkBMON=38
xilinkBMON=39
ximovecBMON=40
xccrtoeaBMON=41
xmovesBMON=42
xbfieldBMON=43
xbfieldtodxBMON=44
xdxtobfieldBMON=45
xbkptBMON=46
xlongbxxBMON=47
xlongccBMON=48
xcallmBMON=49
xcasBMON=50
xcas2BMON=51
xchk2BMON=52
xcmp2BMON=53
xrx03BMON=54
xccodeBMON=55
xccodesizeBMON=56
xilinklgBMON=57
xmululBMON=58
xmulslBMON=59
xdivullBMON=60
xdivsllBMON=61
xpackBMON=62
xea2todxBMON=63 ;chk.l
xfccodeBMON=64
xfccodesizeBMON=65
xfccodewordrelBMON=66
xfccodeeaBMON=67
xfnopBMON=68
xfmovecrBMON=69
xpmoveBMON=70
xpmovefdBMON=71
xpflushaBMON=72
xpflushBMON=73
xploadBMON=74
xptestBMON=75
xidbcacBMON=76
xidbindBMON=77
xmov16BMON=78
xpccodeeaBMON=79
xpccodewordrelBMON=80
xpccodeBMON=81
xpccodesizeBMON=82
xbrapccBMON=83
xbrafccBMON=84
xpflushsBMON=85
xpflushrBMON=86
xpvalidBMON=87
xpflush40BMON=88
xmov162BMON=89
xlpstopBMON=90
xtblBMON=91
xfpuBMON=92
xfmovelBMON=93
xfmovemlBMON=94
xfmovemxBMON=95
even
disoffsBMON:dc.w opfailBMON,noopsBMON,dcwopBMON,eatoccrBMON,eatosrBMON,srtoeaBMON,wordbxxBMON,wordccBMON
dc.w shortbxxBMON,shortccBMON,eatoaxBMON,eatodxBMON,dxtoeaBMON,iwordtoccrBMON
dc.w iwordtosrBMON,iwordBMON,ccodewordrelBMON,inibtoeaBMON,ccodeeaBMON,srceaBMON
dc.w size67eatodxBMON,size8eatoax9bBMON,size67adsbxBMON,size67ixtoeaBMON
dc.w size67i9btoeaBMON,size67x9btodx02BMON,itrapBMON,srcdx02BMON,imuspBMON
dc.w imoveBMON,imoveqBMON,icmpmBMON,xbcdBMON,size6movepBMON
dc.w imovemBMON,dx9btodx02BMON,ax9btoax02BMON,dx9btoax02BMON
dc.w iunlkBMON,ilinkBMON,imovecBMON,ccrtoeaBMON,imovesBMON,dbfieldBMON,dbfieldtodxBMON
dc.w ddxtobfieldBMON,dbkptBMON,longbxxBMON,longccBMON,icallmBMON,dcasBMON,dcas2BMON
dc.w dchk2BMON,dcmp2BMON,drtmBMON,dtpccBMON,dtpccsizeBMON,dlinklgBMON,dmululBMON,dmulslBMON
dc.w ddivullBMON,ddivsllBMON,dpackBMON,ea2todxBMON,dtpfccBMON,dtpfccsizeBMON
dc.w dfccodewordrelBMON,fccodeeaBMON,dfnopBMON,dfmovecrBMON,dpmoveBMON,dpmovefdBMON
dc.w dpflushaBMON,dpflushBMON,dploadBMON,dptestBMON,didbcacBMON,didbindBMON,dmov16BMON
dc.w dpccodeeaBMON,dpccodewordrelBMON,dtppccBMON,dtppccsizeBMON,dbrapccBMON,dbrafccBMON
dc.w dpflushsBMON,dpflushrBMON,dpvalidBMON,dpflush40BMON,dmov162BMON,dlpstopBMON
dc.w dtblBMON,dfpuBMON,dfmovelBMON,dfmovemlBMON,dfmovemxBMON
;----------------------------------------------------------
instrBMON: dc.w $ffff,$4afc,snopBMON!xnoopsBMON
dc.b "illega","l"+128,0
dc.w $ffff,$4e70,snopBMON!xnoopsBMON
dc.b "rese","t"+128,0,0,0
dc.w $ffff,$4e71,snopBMON!xnoopsBMON
dc.b "no","p"+128,0,0,0,0,0
dc.w $ffff,$4e73,snopBMON!xnoopsBMON
dc.b "rt","e"+128,0,0,0,0,0
dc.w $ffff,$4e75,snopBMON!xnoopsBMON
dc.b "rt","s"+128,0,0,0,0,0
dc.w $ffff,$4e77,snopBMON!xnoopsBMON
dc.b "rt","r"+128,0,0,0,0,0
dc.w $ffff,$4afa,snopBMON!xnoopsBMON ;cpu32 only
dc.b "bgn","d"+128,0,0,0,0
dc.w $ffc0,$f200,snopBMON!xfpuBMON ;68881
dc.b "f"+128,0,0,0,0,0,0,0
dc.w $ffc0,$f200,stabBMON!xfmovelBMON ;68881
dc.b "fmove.","l"+128,0
dc.w $ffc0,$f200,stabBMON!xfmovemlBMON ;68881
dc.b "fmovem.","l"+128
dc.w $ffc0,$f200,stabBMON!xfmovemxBMON ;68881
dc.b "fmovem.","x"+128
dc.w $ffff,$f200,stabBMON!xfmovecrBMON ;68881
dc.b "fmovec","r"+128,0
dc.w $ffff,$f280,snopBMON!xfnopBMON ;68881
dc.b "fno","p"+128,0,0,0,0
dc.w $ffff,$f510,snopBMON!xnoopsBMON ;68040 only!
dc.b "pflusha","n"+128
dc.w $ffff,$f518,snopBMON!xnoopsBMON ;68040 only!
dc.b "pflusha","!"+128
dc.w $ffff,$f000,snopBMON!xpflushaBMON ;68020 order!
dc.b "pflush","a"+128,0
dc.w $ffff,$f000,stabBMON!xpflushsBMON ;68851 only order!
dc.b "pflush","s"+128,0
dc.w $ffc0,$f000,stabBMON!xpflushrBMON ;68851 only order!
dc.b "pflush","r"+128,0
dc.w $fff8,$f500,stabBMON!xpflush40BMON ;68040 only!
dc.b "pflush","n"+128,0
dc.w $fff8,$f508,stabBMON!xpflush40BMON ;68040 only!
dc.b "pflus","h"+128,0,0
dc.w $fff8,$f548,stabBMON!xpflush40BMON ;68040 only!
dc.b "ptest","w"+128,0,0
dc.w $fff8,$f568,stabBMON!xpflush40BMON ;68040 only!
dc.b "ptest","r"+128,0,0
dc.w $ffff,$f000,stabBMON!xpflushBMON ;68020 order!
dc.b "pflus","h"+128,0,0
dc.w $ffc0,$f000,stabBMON!xpvalidBMON ;68851 only
dc.b "pvali","d"+128,0,0
dc.w $ffff,$003c,stabBMON!xiwordtoccrBMON
dc.b "or","i"+128,0,0,0,0,0
dc.w $ffff,$023c,stabBMON!xiwordtoccrBMON
dc.b "and","i"+128,0,0,0,0
dc.w $ffff,$0a3c,stabBMON!xiwordtoccrBMON
dc.b "eor","i"+128,0,0,0,0
dc.w $ffff,$007c,stabBMON!xiwordtosrBMON
dc.b "or","i"+128,0,0,0,0,0
dc.w $ffff,$027c,stabBMON!xiwordtosrBMON
dc.b "and","i"+128,0,0,0,0
dc.w $ffff,$0a7c,stabBMON!xiwordtosrBMON
dc.b "eor","i"+128,0,0,0,0
dc.w $f1f8,$c140,stabBMON!xdx9btodx02BMON
dc.b "ex","g"+128,0,0,0,0,0
dc.w $f1f8,$c148,stabBMON!xax9btoax02BMON
dc.b "ex","g"+128,0,0,0,0,0
dc.w $f1f8,$c188,stabBMON!xdx9btoax02BMON
dc.b "ex","g"+128,0,0,0,0,0
dc.w $fff8,$4e58,stabBMON!xiunlkBMON
dc.b "unl","k"+128,0,0,0,0
dc.w $fff8,$4808,stabBMON!xilinklgBMON ;68020
dc.b "link.","l"+128,0,0
dc.w $fff8,$4e50,stabBMON!xilinkBMON
dc.b "lin","k"+128,0,0,0,0
dc.w $fff8,$4848,stabBMON!xbkptBMON ;68020
dc.b "bkp","t"+128,0,0,0,0
dc.w $f1f0,$8140,stabBMON!xpackBMON ;68020
dc.b "pac","k"+128,0,0,0,0
dc.w $f1f0,$8180,stabBMON!xpackBMON ;68020
dc.b "unp","k"+128,0,0,0,0
dc.w $fff0,$4e40,stabBMON!xitrapBMON
dc.b "tra","p"+128,0,0,0,0
dc.w $f100,$7000,stabBMON!ximoveqBMON
dc.b "move","q"+128,0,0,0
dc.w $ffff,$f800,stabBMON!xlpstopBMON ;cpu32 only
dc.b "lpsto","p"+128,0,0
dc.w $ffff,$4e72,stabBMON!xiwordBMON
dc.b "sto","p"+128,0,0,0,0
dc.w $ffff,$4e74,stabBMON!xiwordBMON ;68010
dc.b "rt","d"+128,0,0,0,0,0
dc.w $fdff,$0cfc,snopBMON!xcas2BMON ;68020
dc.b "cas2","."+128,0,0,0
dc.w $fff8,$4840,stabBMON!xsrcdx02BMON
dc.b "swa","p"+128,0,0,0,0
dc.w $fff8,$49c0,stabBMON!xsrcdx02BMON ;68020
dc.b "ext","b"+128,0,0,0,0
dc.w $ffb8,$4880,s6BMON!xsrcdx02BMON
dc.b "ex","t"+128,0,0,0,0,0
dc.w $fff0,$06c0,stabBMON!xrx03BMON ;68020
dc.b "rt","m"+128,0,0,0,0,0
;????
dc.w $fffe,$f07a,snopBMON!xpccodesizeBMON ;68851 only order!
dc.b "ptra","p"+128,0,0,0
dc.w $ffff,$f07c,snopBMON!xpccodeBMON ;68851 only order!
dc.b "ptra","p"+128,0,0,0
dc.w $fffe,$f27a,snopBMON!xfccodesizeBMON ;68881 order!
dc.b "ftra","p"+128,0,0,0
dc.w $ffff,$f27c,snopBMON!xfccodeBMON ;68881 order!
dc.b "ftra","p"+128,0,0,0
dc.w $f0fe,$50fa,snopBMON!xccodesizeBMON ;68020 order!
dc.b "tra","p"+128,0,0,0,0
dc.w $f0ff,$50fc,snopBMON!xccodeBMON ;68020 order!
dc.b "tra","p"+128,0,0,0,0
dc.w $ffff,$4e76,snopBMON!xnoopsBMON ;order!
dc.b "trap","v"+128,0,0,0
;????
dc.w $ff3f,$f418,stabBMON!xidbcacBMON ;68040
dc.b "cinv","a"+128,0,0,0
dc.w $ff38,$f408,stabBMON!xidbindBMON ;68040
dc.b "cinv","l"+128,0,0,0
dc.w $ff38,$f410,stabBMON!xidbindBMON ;68040
dc.b "cinv","p"+128,0,0,0
dc.w $ff3f,$f438,stabBMON!xidbcacBMON ;68040
dc.b "cpush","a"+128,0,0
dc.w $ff38,$f428,stabBMON!xidbindBMON ;68040
dc.b "cpush","l"+128,0,0
dc.w $ff38,$f430,stabBMON!xidbindBMON ;68040
dc.b "cpush","p"+128,0,0
dc.w $fff8,$f620,stabBMON!xmov16BMON ;68040 order!
dc.b "move1","6"+128,0,0
dc.w $ffe0,$f600,stabBMON!xmov162BMON ;68040
dc.b "move1","6"+128,0,0
dc.w $f138,$b108,s67BMON!xicmpmBMON
dc.b "cmp","m"+128,0,0,0,0
dc.w $f1f0,$c100,stabBMON!xxbcdBMON
dc.b "abc","d"+128,0,0,0,0
dc.w $f1f0,$8100,stabBMON!xxbcdBMON
dc.b "sbc","d"+128,0,0,0,0
dc.w $f130,$d100,s67BMON!xsize67adsbxBMON
dc.b "add","x"+128,0,0,0,0
dc.w $f130,$9100,s67BMON!xsize67adsbxBMON
dc.b "sub","x"+128,0,0,0,0
dc.w $ffc0,$f000,stabBMON!xpmovefdBMON ;68030 only
dc.b "pmovef","d"+128,0
dc.w $ffc0,$f000,stabBMON!xpmoveBMON ;68020
dc.b "pmov","e"+128,0,0,0
dc.w $ffc0,$f000,snopBMON!xploadBMON ;68020
dc.b "ploa","d"+128,0,0,0
dc.w $ffc0,$f000,snopBMON!xptestBMON ;68020
dc.b "ptes","t"+128,0,0,0
dc.w $ffc0,$e8c0,stabBMON!xbfieldBMON ;68020
dc.b "bfts","t"+128,0,0,0
dc.w $ffc0,$eac0,stabBMON!xbfieldBMON ;68020
dc.b "bfch","g"+128,0,0,0
dc.w $ffc0,$ecc0,stabBMON!xbfieldBMON ;68020
dc.b "bfcl","r"+128,0,0,0
dc.w $ffc0,$eec0,stabBMON!xbfieldBMON ;68020
dc.b "bfse","t"+128,0,0,0
dc.w $ffc0,$e9c0,stabBMON!xbfieldtodxBMON ;68020
dc.b "bfext","u"+128,0,0
dc.w $ffc0,$ebc0,stabBMON!xbfieldtodxBMON ;68020
dc.b "bfext","s"+128,0,0
dc.w $ffc0,$edc0,stabBMON!xbfieldtodxBMON ;68020
dc.b "bfff","o"+128,0,0,0
dc.w $ffc0,$efc0,stabBMON!xdxtobfieldBMON ;68020
dc.b "bfin","s"+128,0,0,0
dc.w $ffc0,$06c0,stabBMON!xcallmBMON ;68020
dc.b "call","m"+128,0,0,0
dc.w $ffc0,$40c0,stabBMON!xsrtoeaBMON
dc.b "mov","e"+128,0,0,0,0
dc.w $ffc0,$42c0,stabBMON!xccrtoeaBMON ;68010
dc.b "mov","e"+128,0,0,0,0
dc.w $ffc0,$44c0,stabBMON!xeatoccrBMON
dc.b "mov","e"+128,0,0,0,0
dc.w $ffc0,$46c0,stabBMON!xeatosrBMON
dc.b "mov","e"+128,0,0,0,0
dc.w $fff0,$4e60,stabBMON!ximuspBMON
dc.b "mov","e"+128,0,0,0,0
dc.w $fffe,$4e7a,stabBMON!ximovecBMON ;68010
dc.b "move","c"+128,0,0,0
dc.w $fb80,$4880,s6BMON!ximovemBMON
dc.b "move","m"+128,0,0,0
dc.w $f138,$0108,s6BMON!xsize6movepBMON
dc.b "move","p"+128,0,0,0
dc.w $ffc0,$f800,snopBMON!xtblBMON ;cpu32 only
dc.b "tb","l"+128,0,0,0,0,0
dc.w $f1c0,$41c0,stabBMON!xeatoaxBMON
dc.b "le","a"+128,0,0,0,0,0
dc.w $ffff,$60ff,stabBMON!xlongbxxBMON ;68020
dc.b "bra.","l"+128,0,0,0
dc.w $ffff,$61ff,stabBMON!xlongbxxBMON ;68020
dc.b "bsr.","l"+128,0,0,0
dc.w $ffff,$6000,stabBMON!xwordbxxBMON
dc.b "bra.","w"+128,0,0,0
dc.w $ffff,$6100,stabBMON!xwordbxxBMON
dc.b "bsr.","w"+128,0,0,0
dc.w $ff00,$6000,stabBMON!xshortbxxBMON ;order !
dc.b "bra.","b"+128,0,0,0
dc.w $ff00,$6000,stabBMON!xshortbxxBMON ;order !
dc.b "bra.","s"+128,0,0,0 ;clone
dc.w $ff00,$6100,stabBMON!xshortbxxBMON
dc.b "bsr.","b"+128,0,0,0
dc.w $ff00,$6100,stabBMON!xshortbxxBMON
dc.b "bsr.","s"+128,0,0,0 ;clone
dc.w $ffb0,$f080,snopBMON!xbrapccBMON ;68851 only
dc.b "p","b"+128,0,0,0,0,0,0
dc.w $ffa0,$f280,snopBMON!xbrafccBMON ;68881
dc.b "f","b"+128,0,0,0,0,0,0
dc.w $f0ff,$60ff,snopBMON!xlongccBMON ;68020
dc.b "b"+128,0,0,0,0,0,0,0
dc.w $f0ff,$6000,snopBMON!xwordccBMON
dc.b "b"+128,0,0,0,0,0,0,0
dc.w $f000,$6000,snopBMON!xshortccBMON
dc.b "b"+128,0,0,0,0,0,0,0
dc.w $fff8,$f048,snopBMON!xpccodewordrelBMON ;68851 only
dc.b "pd","b"+128,0,0,0,0,0
dc.w $ffc0,$f040,snopBMON!xpccodeeaBMON ;68851 only
dc.b "p","s"+128,0,0,0,0,0,0
dc.w $fff8,$f248,snopBMON!xfccodewordrelBMON ;68881
dc.b "fd","b"+128,0,0,0,0,0
dc.w $ffc0,$f240,snopBMON!xfccodeeaBMON ;68881
dc.b "f","s"+128,0,0,0,0,0,0
dc.w $f0f8,$50c8,snopBMON!xccodewordrelBMON ;order !
dc.b "d","b"+128,0,0,0,0,0,0
dc.w $f0c0,$50c0,snopBMON!xccodeeaBMON
dc.b "s"+128,0,0,0,0,0,0,0
dc.w $ffc0,$4800,stabBMON!xsrceaBMON
dc.b "nbc","d"+128,0,0,0,0
dc.w $ffc0,$4840,stabBMON!xsrceaBMON
dc.b "pe","a"+128,0,0,0,0,0
dc.w $ffc0,$4ac0,stabBMON!xsrceaBMON
dc.b "ta","s"+128,0,0,0,0,0
dc.w $ffc0,$4e80,stabBMON!xsrceaBMON
dc.b "js","r"+128,0,0,0,0,0
dc.w $ffc0,$4ec0,stabBMON!xsrceaBMON
dc.b "jm","p"+128,0,0,0,0,0
dc.w $ffc0,$e0c0,stabBMON!xsrceaBMON
dc.b "as","r"+128,0,0,0,0,0
dc.w $ffc0,$e1c0,stabBMON!xsrceaBMON
dc.b "as","l"+128,0,0,0,0,0
dc.w $ffc0,$e2c0,stabBMON!xsrceaBMON
dc.b "ls","r"+128,0,0,0,0,0
dc.w $ffc0,$e3c0,stabBMON!xsrceaBMON
dc.b "ls","l"+128,0,0,0,0,0
dc.w $ffc0,$e4c0,stabBMON!xsrceaBMON
dc.b "rox","r"+128,0,0,0,0
dc.w $ffc0,$e5c0,stabBMON!xsrceaBMON
dc.b "rox","l"+128,0,0,0,0
dc.w $ffc0,$e6c0,stabBMON!xsrceaBMON
dc.b "ro","r"+128,0,0,0,0,0
dc.w $ffc0,$e7c0,stabBMON!xsrceaBMON
dc.b "ro","l"+128,0,0,0,0,0
dc.w $ffc0,$f100,stabBMON!xsrceaBMON ;68851 only
dc.b "psav","e"+128,0,0,0
dc.w $ffc0,$f140,stabBMON!xsrceaBMON ;68851 only
dc.b "prestor","e"+128
dc.w $ffc0,$f300,stabBMON!xsrceaBMON ;68881
dc.b "fsav","e"+128,0,0,0
dc.w $ffc0,$f340,stabBMON!xsrceaBMON ;68881
dc.b "frestor","e"+128
dc.w $ffc0,$4c40,stabBMON!xdivullBMON ;68020
dc.b "divul.","l"+128,0
dc.w $ffc0,$4c40,stabBMON!xdivsllBMON ;68020
dc.b "divsl.","l"+128,0
dc.w $ffc0,$4c40,stabBMON!xmululBMON ;68020
dc.b "divu.","l"+128,0,0
dc.w $ffc0,$4c40,stabBMON!xmulslBMON ;68020
dc.b "divs.","l"+128,0,0
dc.w $ffc0,$4c00,stabBMON!xmululBMON ;68020
dc.b "mulu.","l"+128,0,0
dc.w $ffc0,$4c00,stabBMON!xmulslBMON ;68020
dc.b "muls.","l"+128,0,0
dc.w $f1c0,$80c0,stabBMON!xeatodxBMON
dc.b "div","u"+128,0,0,0,0
dc.w $f1c0,$81c0,stabBMON!xeatodxBMON
dc.b "div","s"+128,0,0,0,0
dc.w $f1c0,$c0c0,stabBMON!xeatodxBMON
dc.b "mul","u"+128,0,0,0,0
dc.w $f1c0,$c1c0,stabBMON!xeatodxBMON
dc.b "mul","s"+128,0,0,0,0
dc.w $f1c0,$4180,stabBMON!xeatodxBMON
dc.b "chk.","w"+128,0,0,0
dc.w $f1c0,$4100,stabBMON!xea2todxBMON ;68020
dc.b "chk.","l"+128,0,0,0
dc.w $f0c0,$90c0,s8BMON!xsize8eatoax9bBMON
dc.b "sub","a"+128,0,0,0,0
dc.w $f0c0,$b0c0,s8BMON!xsize8eatoax9bBMON
dc.b "cmp","a"+128,0,0,0,0
dc.w $f0c0,$d0c0,s8BMON!xsize8eatoax9bBMON
dc.b "add","a"+128,0,0,0,0
dc.w $f100,$8000,s67BMON!xsize67eatodxBMON
dc.b "o","r"+128,0,0,0,0,0,0
dc.w $f100,$9000,s67BMON!xsize67eatodxBMON
dc.b "su","b"+128,0,0,0,0,0
dc.w $f100,$b000,s67BMON!xsize67eatodxBMON
dc.b "cm","p"+128,0,0,0,0,0
dc.w $f100,$c000,s67BMON!xsize67eatodxBMON
dc.b "an","d"+128,0,0,0,0,0
dc.w $f100,$d000,s67BMON!xsize67eatodxBMON
dc.b "ad","d"+128,0,0,0,0,0
dc.w $f100,$8100,s67BMON!xdxtoeaBMON
dc.b "o","r"+128,0,0,0,0,0,0
dc.w $f100,$9100,s67BMON!xdxtoeaBMON
dc.b "su","b"+128,0,0,0,0,0
dc.w $f100,$b100,s67BMON!xdxtoeaBMON
dc.b "eo","r"+128,0,0,0,0,0
dc.w $f100,$c100,s67BMON!xdxtoeaBMON
dc.b "an","d"+128,0,0,0,0,0
dc.w $f100,$d100,s67BMON!xdxtoeaBMON
dc.b "ad","d"+128,0,0,0,0,0
dc.w $ffc0,$0800,stabBMON!xinibtoeaBMON
dc.b "bts","t"+128,0,0,0,0
dc.w $ffc0,$0840,stabBMON!xinibtoeaBMON
dc.b "bch","g"+128,0,0,0,0
dc.w $ffc0,$0880,stabBMON!xinibtoeaBMON
dc.b "bcl","r"+128,0,0,0,0
dc.w $ffc0,$08c0,stabBMON!xinibtoeaBMON
dc.b "bse","t"+128,0,0,0,0
dc.w $f9c0,$08c0,s9a_BMON!xcasBMON ;68020
dc.b "ca","s"+128,0,0,0,0,0
dc.w $f9c0,$00c0,s9aBMON!xchk2BMON ;68020
dc.b "chk","2"+128,0,0,0,0
dc.w $f9c0,$00c0,s9aBMON!xcmp2BMON ;68020
dc.b "cmp","2"+128,0,0,0,0
dc.w $f100,$5000,s67BMON!xsize67i9btoeaBMON
dc.b "add","q"+128,0,0,0,0
dc.w $f100,$5100,s67BMON!xsize67i9btoeaBMON
dc.b "sub","q"+128,0,0,0,0
dc.w $f118,$e000,s67BMON!xsize67x9btodx02BMON
dc.b "as","r"+128,0,0,0,0,0
dc.w $f118,$e008,s67BMON!xsize67x9btodx02BMON
dc.b "ls","r"+128,0,0,0,0,0
dc.w $f118,$e010,s67BMON!xsize67x9btodx02BMON
dc.b "rox","r"+128,0,0,0,0
dc.w $f118,$e018,s67BMON!xsize67x9btodx02BMON
dc.b "ro","r"+128,0,0,0,0,0
dc.w $f118,$e100,s67BMON!xsize67x9btodx02BMON
dc.b "as","l"+128,0,0,0,0,0
dc.w $f118,$e108,s67BMON!xsize67x9btodx02BMON
dc.b "ls","l"+128,0,0,0,0,0
dc.w $f118,$e110,s67BMON!xsize67x9btodx02BMON
dc.b "rox","l"+128,0,0,0,0
dc.w $f118,$e118,s67BMON!xsize67x9btodx02BMON
dc.b "ro","l"+128,0,0,0,0,0
dc.w $ff00,$0000,s67BMON!xsize67ixtoeaBMON
dc.b "or","i"+128,0,0,0,0,0
dc.w $ff00,$0200,s67BMON!xsize67ixtoeaBMON
dc.b "and","i"+128,0,0,0,0
dc.w $ff00,$0400,s67BMON!xsize67ixtoeaBMON
dc.b "sub","i"+128,0,0,0,0
dc.w $ff00,$0600,s67BMON!xsize67ixtoeaBMON
dc.b "add","i"+128,0,0,0,0
dc.w $ff00,$0a00,s67BMON!xsize67ixtoeaBMON
dc.b "eor","i"+128,0,0,0,0
dc.w $ff00,$0c00,s67BMON!xsize67ixtoeaBMON
dc.b "cmp","i"+128,0,0,0,0
dc.w $f1c0,$0100,stabBMON!xdxtoeaBMON
dc.b "bts","t"+128,0,0,0,0
dc.w $f1c0,$0140,stabBMON!xdxtoeaBMON
dc.b "bch","g"+128,0,0,0,0
dc.w $f1c0,$0180,stabBMON!xdxtoeaBMON
dc.b "bcl","r"+128,0,0,0,0
dc.w $f1c0,$01c0,stabBMON!xdxtoeaBMON
dc.b "bse","t"+128,0,0,0,0
dc.w $ff00,$0e00,s67BMON!xmovesBMON ;68010
dc.b "move","s"+128,0,0,0
dc.w $ff00,$4000,s67BMON!xsrceaBMON
dc.b "neg","x"+128,0,0,0,0
dc.w $ff00,$4200,s67BMON!xsrceaBMON
dc.b "cl","r"+128,0,0,0,0,0
dc.w $ff00,$4400,s67BMON!xsrceaBMON
dc.b "ne","g"+128,0,0,0,0,0
dc.w $ff00,$4600,s67BMON!xsrceaBMON
dc.b "no","t"+128,0,0,0,0,0
dc.w $ff00,$4a00,s67BMON!xsrceaBMON
dc.b "ts","t"+128,0,0,0,0,0
dc.w $c000,$0000,snopBMON!ximoveBMON
dc.b "move","."+128,0,0,0
dc.w $f000,$a000,stabBMON!xdcwopBMON
dc.b "line-","a"+128,0,0
dc.w $f000,$f000,stabBMON!xdcwopBMON
dc.b "line-","f"+128,0,0
dc.w $0000,$0000,stabBMON!xdcwopBMON
dc.b "dc.","w"+128,0,0,0,0
s67BMON =$0000
s6BMON =$0100
s8BMON =$0200
stabBMON=$0300
snopBMON=$0400
s9a_BMON=$0500 ;68020 casBMON
s9aBMON =$0600 ;68020 chk2,cmp2
;----------------------------------------------------------
twolong_BMON:
bsr.b longtoa_BMON
move.b #"-",(a0)+
move.l d1,d0
bra.b longtoa_BMON
twoadr_BMON:bsr.b adrtoa_BMON
move.b #"-",(a0)+
move.l d1,d0
bra.b adrtoa_BMON
nibtoa_BMON:move.b #"$",(a0)+
nibtoaBMON: movem.l d0-d2,-(a7)
moveq #1-1,d2
ror.l #4,d0
bra.b lta0BMON
bytetoa_BMON:move.b #"$",(a0)+
bytetoaBMON:movem.l d0-d2,-(a7)
moveq #2-1,d2
ror.l #8,d0
bra.b lta0BMON
wordtoa_BMON:move.b #"$",(a0)+
wordtoaBMON:movem.l d0-d2,-(a7)
moveq #4-1,d2
swap d0
bra.b lta0BMON
adrtoa_BMON:move.b #"$",(a0)+
adrtoaBMON: movem.l d0-d2,-(a7)
moveq #6-1,d2
lsl.l #8,d0
bra.b lta0BMON
longtoa_BMON:move.b #"$",(a0)+
longtoaBMON:movem.l d0-d2,-(a7)
moveq #8-1,d2
lta0BMON: rol.l #4,d0
moveq #$0f,d1
and.w d0,d1
move.b l2asciiBMON(pc,d1.w),(a0)+
dbf d2,lta0BMON
movem.l (a7)+,d0-d2
rts
l2asciiBMON:dc.b "0123456789abcdef"
hextoa_BMON:movem.l d0-d3,-(a7)
moveq #9,d2
cmp.l d2,d0
bls.b hta3BMON
move.b #"$",(a0)+
hta3BMON: sf d3
moveq #8-1,d2
hta0BMON: rol.l #4,d0
moveq #$0f,d1
and.w d0,d1
bne.b hta1BMON
tst.w d2
beq.b hta1BMON
tst.b d3
beq.b hta2BMON
hta1BMON: st d3
move.b l2asciiBMON(pc,d1.w),(a0)+
hta2BMON: dbf d2,hta0BMON
movem.l (a7)+,d0-d3
rts
wordtodBMON:move.l d0,-(a7)
ext.l d0
divu #1000,d0
add.b #"0",d0
move.b d0,(a0)+
clr.w d0
swap d0
divu #100,d0
add.b #"0",d0
move.b d0,(a0)+
swap d0
bra.b btd0BMON
bytetodBMON:move.l d0,-(a7)
btd0BMON: cmp.b #99,d0
bls.b btd1BMON
moveq #99,d0
btd1BMON: ext.w d0
ext.l d0
divu #10,d0
bra.b ntd1BMON
nibtodBMON: move.l d0,-(a7)
moveq #%1111,d0
and.l (a7),d0
divu #10,d0
beq.b ntd0BMON
ntd1BMON: add.b #"0",d0
move.b d0,(a0)+
ntd0BMON: swap d0
add.b #"0",d0
move.b d0,(a0)+
move.l (a7)+,d0
rts
hextodBMON: movem.l d0-d4/a1,-(a7)
lea divtabBMON(pc),a1
moveq #10-1,d1
sf d4
hd0BMON: moveq #"0",d2
move.l (a1)+,d3
hd1BMON: cmp.l d3,d0
bcs.b hd2BMON
st d4
sub.l d3,d0
addq.b #1,d2
bra.b hd1BMON
hd2BMON: tst.w d1
beq.b hd4BMON
tst.b d4
beq.b hd3BMON
hd4BMON: move.b d2,(a0)+
hd3BMON: dbf d1,hd0BMON
movem.l (a7)+,d0-d4/a1
rts
divtabBMON: dc.l 1000000000,100000000,10000000,1000000
dc.l 100000,10000,1000,100,10,1
hextobBMON: movem.l d0-d4,-(a7)
sf d4
bsr.b hb3BMON
bsr.b hb3BMON
bsr.b hb3BMON
st d4
bsr.b hb3BMON
movem.l (a7)+,d0-d4
rts
hb3BMON: rol.l #8,d0
move.b d0,d3
bne.b hb2BMON
tst.b d4
beq.b hb4BMON
hb2BMON: st d4
bytetobBMON:moveq #8-1,d2
hb0BMON: moveq #"0",d1
add.b d3,d3
bcc.b hb1BMON
moveq #"1",d1
hb1BMON: move.b d1,(a0)+
dbf d2,hb0BMON
move.b #" ",(a0)+
hb4BMON: rts
ifne HRTeval
atolong_BMON
atolongBMON
atoword_BMON
atowordBMON
atobyte_BMON
atobyteBMON
atodnibBMON
atodlongBMON
movem.l d1-d7/a0-a2/a4-a6,-(a7)
move.l a3,a0
bsr evaluate
move.l a0,a3
movem.l (a7)+,d1-d7/a0-a2/a4-a6
tst.l d0
rts
else
atolong_BMON:cmp.b #"$",(a3)
bne.b atolongBMON
addq.w #1,a3
atolongBMON:moveq #8-1,d2
bra.b atob2BMON
atoword_BMON:cmp.b #"$",(a3)
bne.b atowordBMON
addq.w #1,a3
atowordBMON:moveq #4-1,d2
bra.b atob2BMON
atobyte_BMON:cmp.b #"$",(a3)
bne.b atobyteBMON
addq.w #1,a3
atobyteBMON:moveq #2-1,d2
atob2BMON: moveq #0,d0
atob1BMON: move.b (a3),d1
cmp.b #"f",d1
bhi.b atob3BMON
sub.b #"0",d1
bcs.b atob3BMON
cmp.b #9,d1
bls.b atob0BMON
cmp.b #"a"-"0",d1
bcs.b atob3BMON
sub.b #"a"-"0"-10,d1
atob0BMON: lsl.l #4,d0
or.b d1,d0
addq.w #1,a3
dbf d2,atob1BMON
atob3BMON: tst.l d0
rts
atodnibBMON:moveq #0,d0 ;0-99
move.b (a3),d1
sub.b #"0",d1
bcs.b atdnb0BMON
cmp.b #9,d1
bhi.b atdnb0BMON
addq.w #1,a3
move.b d1,d0
move.b (a3),d1
sub.b #"0",d1
bcs.b atdnb0BMON
cmp.b #9,d1
bhi.b atdnb0BMON
addq.w #1,a3
mulu #10,d0
add.b d1,d0
atdnb0BMON: tst.b d0
rts
atodlongBMON:
moveq #0,d0
moveq #0,d1
moveq #10-1,d2
atol1BMON: move.b (a3),d1
sub.b #"0",d1
bcs.b atodl0BMON
cmp.b #9,d1
bhi.b atodl0BMON
addq.w #1,a3
add.l d0,d0 ;*2
move.l d0,-(a7)
lsl.l #2,d0 ;*2*4
add.l (a7)+,d0
add.l d1,d0
dbf d2,atol1BMON
atodl0BMON: rts
endc
;----------------------------------------------------------
fpuinstBMON:dc.b %10110000,"sinco","s"+128 ;order!
dc.b %00011000,"ab","s"+128,0,0,0
dc.b %01011000,"sab","s"+128,0,0
dc.b %01011100,"dab","s"+128,0,0
dc.b %00011100,"aco","s"+128,0,0
dc.b %10100010,"ad","d"+128,0,0,0
dc.b %11100010,"sad","d"+128,0,0
dc.b %11100110,"dad","d"+128,0,0
dc.b %00001100,"asi","n"+128,0,0
dc.b %00001010,"ata","n"+128,0,0
dc.b %00001101,"atan","h"+128,0
dc.b %10111000,"cm","p"+128,0,0,0
dc.b %00011101,"co","s"+128,0,0,0
dc.b %00011001,"cos","h"+128,0,0
dc.b %10100000,"di","v"+128,0,0,0
dc.b %11100000,"sdi","v"+128,0,0
dc.b %11100100,"ddi","v"+128,0,0
dc.b %00010000,"eto","x"+128,0,0
dc.b %00011110,"getex","p"+128
dc.b %00011111,"getma","n"+128
dc.b %00000001,"in","t"+128,0,0,0
dc.b %00000011,"intr","z"+128,0
dc.b %00010101,"log1","0"+128,0
dc.b %00010110,"log","2"+128,0,0
dc.b %00010100,"log","n"+128,0,0
dc.b %00000110,"lognp","1"+128
dc.b %10100001,"mo","d"+128,0,0,0
movetxtBMON:dc.b %10000000,"mov","e"+128,0,0
dc.b %11000000,"smov","e"+128,0
dc.b %11000100,"dmov","e"+128,0
dc.b %10100011,"mu","l"+128,0,0,0
dc.b %11100011,"smu","l"+128,0,0
dc.b %11100111,"dmu","l"+128,0,0
dc.b %00011010,"ne","g"+128,0,0,0
dc.b %01011010,"sne","g"+128,0,0
dc.b %01011110,"dne","g"+128,0,0
dc.b %10100101,"re","m"+128,0,0,0
dc.b %10100110,"scal","e"+128,0
dc.b %10100100,"sgldi","v"+128
dc.b %10100111,"sglmu","l"+128
dc.b %00001110,"si","n"+128,0,0,0
dc.b %00000010,"sin","h"+128,0,0
dc.b %00000100,"sqr","t"+128,0,0
dc.b %01000001,"ssqr","t"+128,0
dc.b %01000101,"dsqr","t"+128,0
dc.b %10101000,"su","b"+128,0,0,0
dc.b %11101000,"ssu","b"+128,0,0
dc.b %11101100,"dsu","b"+128,0,0
dc.b %00001111,"ta","n"+128,0,0,0
dc.b %00001001,"tan","h"+128,0,0
dc.b %00010010,"tento","x"+128
dc.b %00111010,"ts","t"+128,0,0,0
dc.b %00010001,"twoto","x"+128
dc.b 0
even
;----------------------------------------------------------
ccodetxtBMON: dc.b "t",0,"f",0,"hilscccsneeqvcvsplmigeltgtle" ;even!
pccodetxtBMON: dc.b "bsbclslcssscasacwswcisicgsgccscc" ;even!
fccodetxtBMON: dc.l "f"<<24 ;fpu condition codesBMON
dc.l "eq"<<16
dc.l "ogt"<<8
dc.l "oge"<<8
dc.l "olt"<<8
dc.l "ole"<<8
dc.l "ogl"<<8
dc.l "or"<<16
dc.l "un"<<16
dc.l "ueq"<<8
dc.l "ugt"<<8
dc.l "uge"<<8
dc.l "ult"<<8
dc.l "ule"<<8
dc.l "ne"<<16
dc.l "t"<<24
dc.l "sf"<<16
dc.l "seq"<<8
dc.l "gt"<<16
dc.l "ge"<<16
dc.l "lt"<<16
dc.l "le"<<16
dc.l "gl"<<16
dc.l "gle"<<8
dc.l "ngle"
dc.l "ngl"<<8
dc.l "nle"<<8
dc.l "nlt"<<8
dc.l "nge"<<8
dc.l "ngt"<<8
dc.l "sne"<<8
dc.l "st"<<16
fmconstBMON:dc.b "1","E"+$80,"P","i"+$80,"Log10(2",")"+$80,"e"+$80,"Log2(e",")"+$80
dc.b "Log10(e",")"+$80,"0.","0"+$80,"ln(2",")"+$80,"ln(10",")"+$80
dc.b "1"+$80,"1","0"+$80,"10","0"+$80
usptxtBMON: dc.b "us","p"+$80
toccrtxtBMON: dc.b ","
ccrtxtBMON: dc.b "cc","r"+$80
tosrtxtBMON: dc.b ","
srtxtBMON: dc.b "s","r"+$80
xbcdtxtBMON: dc.b "),-","("+$80
cmpmtxtBMON: dc.b ")+,","("+$80
even
cregsBMON: dc.b $08,$08,"pcr",0 ;68060
dc.b $08,$07,"srp",0 ;68040
dc.b $08,$06,"urp",0 ;68040
dc.b $08,$05,"mmur" ;68040
dc.b $08,$04,"isp",0
dc.b $08,$03,"msp",0
dc.b $08,$02,"caar" ;68020/30 only
dc.b $08,$01,"vbr",0
dc.b $08,$00,"usp",0
dc.b $00,$08,"busr" ;68060
dc.b $00,$07,"dtt1" ;68040
dc.b $00,$06,"dtt0" ;68040
dc.b $00,$05,"itt1" ;68040
dc.b $00,$04,"itt0" ;68040
dc.b $00,$03,"tc",0,0 ;68040
dc.b $00,$02,"cacr"
dc.b $00,$01,"dfc",0
dc.b $00,$00,"sfc",0
dc.b $80
pregsBMON: dc.b $08,"tt","0"+$80
dc.b $0c,"tt","1"+$80
dc.b $40,"t","c"+$80
dc.b $44,"dr","p"+$80 ;68851 only
dc.b $48,"sr","p"+$80
dc.b $4c,"cr","p"+$80
dc.b $50,"ca","l"+$80 ;68851 only
dc.b $58,"sc","c"+$80 ;68851 only
dc.b $5c,"a","c"+$80 ;68851 only
dc.b $60,"mmus","r"+$80 ;68030 mmusr = 68851 psr
dc.b $60,"ps","r"+$80 ;68030 mmusr = 68851 psr
dc.b $64,"pcs","r"+$80 ;68851 only
dc.b $ac,"va","l"+$80,0 ;68851 only
sizemovBMON: dc.b "*blw",%11,%00,%10,%01
even
;----------------------------------------------------------
linebufBMON dc.l 0
modeBMON dc.b 0
imsizeBMON: dc.b 0 ;%00.b,%01.w,%10.l,%11.*,%100.x
ea2ndBMON: dc.b 0 ;0:1st eavalue,ff:2nd eavalue
dissignBMON:dc.b %101 ;bit0:nosign/sign,bit1:hex/dez,bit2:no eavalBMON/eavalBMON
even
baseregBMON dc.l 0 ;effective addressBMON accu
disaddrBMON dc.l 0
;----------------------------------------------------------
regsBMON: blk.l 16+6+1+1,0 ;regsBMON/usp/isp/msp/vbr/cacr/caar/pc/sr.w
vbregBMON=19*4+regsBMON
sfcdfcBMON: dc.w 0 ;00000xxx00000yyy
fpuregsBMON:blk.l 8*12,0 ;fp0..7:80+16bit
fpcrBMON: dc.l 0 ;\
fpsrBMON: dc.l 0 ; )union
fpiarBMON: dc.l 0 ;/
mmutt0BMON: dc.l 0 ;\
mmutt1BMON: dc.l 0 ; \
mmutcBMON: dc.l 0 ; )union
mmusrpBMON: dc.l 0,0 ; )
mmucrpBMON: dc.l 0,0 ; /
mmusrBMON: dc.w 0 ;/
mmudrpBMON: dc.l 0,0 ;68851 only